Merge "linker: Fix ARM_R_COPY relocations"
diff --git a/libc/arch-arm/bionic/crtbegin.c b/libc/arch-arm/bionic/crtbegin.c
index 9dcd254..0e2d31e 100644
--- a/libc/arch-arm/bionic/crtbegin.c
+++ b/libc/arch-arm/bionic/crtbegin.c
@@ -31,7 +31,6 @@
void (**preinit_array)(void);
void (**init_array)(void);
void (**fini_array)(void);
- void (**ctors_array)(void);
} structors_array_t;
extern int main(int argc, char **argv, char **env);
@@ -52,10 +51,7 @@
__attribute__ ((section (".fini_array")))
void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1;
-__attribute__ ((section (".ctors")))
-void (*__CTOR_LIST__)(void) = (void (*)(void)) -1;
-
-__attribute__((visbility("hidden")))
+__attribute__((visibility("hidden")))
void _start() {
structors_array_t array;
void *elfdata;
@@ -63,7 +59,6 @@
array.preinit_array = &__PREINIT_ARRAY__;
array.init_array = &__INIT_ARRAY__;
array.fini_array = &__FINI_ARRAY__;
- array.ctors_array = &__CTOR_LIST__;
elfdata = __builtin_frame_address(0) + sizeof(void *);
__libc_init(elfdata, (void *) 0, &main, &array);
diff --git a/libc/arch-arm/bionic/crtend.S b/libc/arch-arm/bionic/crtend.S
index 7196fc1..fffb0ab 100644
--- a/libc/arch-arm/bionic/crtend.S
+++ b/libc/arch-arm/bionic/crtend.S
@@ -35,9 +35,6 @@
.section .fini_array, "aw"
.long 0
- .section .ctors, "aw"
- .long 0
-
#if defined(__linux__) && defined(__ELF__)
.section .note.GNU-stack,"",%progbits
#endif
diff --git a/libc/arch-mips/bionic/crtbegin.S b/libc/arch-mips/bionic/crtbegin.S
index d85d52c..40b689e 100644
--- a/libc/arch-mips/bionic/crtbegin.S
+++ b/libc/arch-mips/bionic/crtbegin.S
@@ -70,8 +70,6 @@
1: .long __PREINIT_ARRAY__
.long __INIT_ARRAY__
.long __FINI_ARRAY__
- .long __CTOR_LIST__
- .long __DTOR_LIST__
.section .preinit_array, "aw"
.type __PREINIT_ARRAY__, @object
@@ -92,18 +90,6 @@
.long -1
.long __do_global_dtors_aux
- .section .ctors, "aw"
- .type __CTOR_LIST__, @object
- .globl __CTOR_LIST__
-__CTOR_LIST__:
- .long -1
-
- .section .dtors, "aw"
- .type __DTOR_LIST__, @object
- .globl __DTOR_LIST__
-__DTOR_LIST__:
- .long -1
-
.abicalls
.text
.align 2
diff --git a/libc/arch-mips/bionic/crtend.S b/libc/arch-mips/bionic/crtend.S
index 7a319be..6984d0e 100644
--- a/libc/arch-mips/bionic/crtend.S
+++ b/libc/arch-mips/bionic/crtend.S
@@ -35,13 +35,3 @@
.section .fini_array, "aw"
.long 0
- .section .ctors, "aw"
- .type __CTOR_END__, @object
-__CTOR_END__:
- .long 0
-
- .section .dtors, "aw"
- .type __DTOR_END__, @object
-__DTOR_END__:
- .long 0
-
diff --git a/libc/bionic/libc_init_common.h b/libc/bionic/libc_init_common.h
index 35050a1..c55594b 100644
--- a/libc/bionic/libc_init_common.h
+++ b/libc/bionic/libc_init_common.h
@@ -35,9 +35,6 @@
void (**preinit_array)(void);
void (**init_array)(void);
void (**fini_array)(void);
-#ifndef __i386__
- void (**ctors_array)(void);
-#endif
} structors_array_t;
extern void __libc_init_common(uintptr_t *elfdata);
diff --git a/libc/bionic/libc_init_static.c b/libc/bionic/libc_init_static.c
index f97961d..97156e8 100644
--- a/libc/bionic/libc_init_static.c
+++ b/libc/bionic/libc_init_static.c
@@ -80,11 +80,6 @@
/* pre-init array. */
call_array(structors->preinit_array);
-#ifndef __i386__
- /* .ctors section initializers, for non-arm-eabi ABIs */
- call_array(structors->ctors_array);
-#endif
-
// call static constructors
call_array(structors->init_array);
diff --git a/libc/netbsd/resolv/res_send.c b/libc/netbsd/resolv/res_send.c
index 72a7ada..f3ee539 100644
--- a/libc/netbsd/resolv/res_send.c
+++ b/libc/netbsd/resolv/res_send.c
@@ -644,6 +644,11 @@
errno = ETIMEDOUT; /* no answer obtained */
} else
errno = terrno;
+
+#if USE_RESOLV_CACHE
+ _resolv_cache_query_failed(cache, buf, buflen);
+#endif
+
return (-1);
fail:
#if USE_RESOLV_CACHE
diff --git a/linker/linker_debug.h b/linker/linker_debug.h
index f1b6208..48a7abf 100644
--- a/linker/linker_debug.h
+++ b/linker/linker_debug.h
@@ -61,6 +61,11 @@
*/
#if LINKER_DEBUG
#include "linker_format.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
extern int debug_verbosity;
#if LINKER_DEBUG_TO_LOG
extern int format_log(int, const char *, const char *, ...);
@@ -75,6 +80,11 @@
if (debug_verbosity > (v)) format_fd(1, x); \
} while (0)
#endif /* !LINKER_DEBUG_TO_LOG */
+
+#ifdef __cplusplus
+};
+#endif
+
#else /* !LINKER_DEBUG */
#define _PRINTVF(v,f,x...) do {} while(0)
#endif /* LINKER_DEBUG */