Merge "Flesh out <sys/msg.h>, <sys/sem.h>, <sys/shm.h>."
diff --git a/libc/Android.bp b/libc/Android.bp
index 44b76a2..52006a4 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -39,6 +39,7 @@
"-Wextra",
"-Wunused",
"-Wno-deprecated-declarations",
+ "-Wframe-larger-than=2048",
// Try to catch typical 32-bit assumptions that break with 64-bit pointers.
"-Werror=pointer-to-int-cast",
@@ -175,6 +176,7 @@
"-DINET6",
"-Wno-unused-parameter",
"-include netbsd-compat.h",
+ "-Wframe-larger-than=66000",
],
local_include_dirs: [
@@ -203,7 +205,6 @@
"upstream-freebsd/lib/libc/stdlib/getopt_long.c",
"upstream-freebsd/lib/libc/stdlib/qsort.c",
"upstream-freebsd/lib/libc/stdlib/quick_exit.c",
- "upstream-freebsd/lib/libc/stdlib/realpath.c",
"upstream-freebsd/lib/libc/string/wcpcpy.c",
"upstream-freebsd/lib/libc/string/wcpncpy.c",
"upstream-freebsd/lib/libc/string/wcscasecmp.c",
@@ -274,6 +275,25 @@
name: "libc_freebsd",
}
+cc_library_static {
+ defaults: ["libc_defaults"],
+ srcs: [
+ "upstream-freebsd/lib/libc/stdlib/realpath.c",
+ ],
+
+ cflags: [
+ "-Wno-sign-compare",
+ "-include freebsd-compat.h",
+ "-Wframe-larger-than=15000",
+ ],
+
+ local_include_dirs: [
+ "upstream-freebsd/android/include",
+ ],
+
+ name: "libc_freebsd_large_stack",
+}
+
// ========================================================
// libc_netbsd.a - upstream NetBSD C library code
// ========================================================
@@ -358,7 +378,6 @@
"upstream-openbsd/lib/libc/gen/daemon.c",
"upstream-openbsd/lib/libc/gen/err.c",
"upstream-openbsd/lib/libc/gen/errx.c",
- "upstream-openbsd/lib/libc/gen/exec.c",
"upstream-openbsd/lib/libc/gen/fnmatch.c",
"upstream-openbsd/lib/libc/gen/ftok.c",
"upstream-openbsd/lib/libc/gen/getprogname.c",
@@ -434,10 +453,7 @@
"upstream-openbsd/lib/libc/stdio/ungetwc.c",
"upstream-openbsd/lib/libc/stdio/vasprintf.c",
"upstream-openbsd/lib/libc/stdio/vdprintf.c",
- "upstream-openbsd/lib/libc/stdio/vfprintf.c",
"upstream-openbsd/lib/libc/stdio/vfscanf.c",
- "upstream-openbsd/lib/libc/stdio/vfwprintf.c",
- "upstream-openbsd/lib/libc/stdio/vfwscanf.c",
"upstream-openbsd/lib/libc/stdio/vsscanf.c",
"upstream-openbsd/lib/libc/stdio/vswprintf.c",
"upstream-openbsd/lib/libc/stdio/vswscanf.c",
@@ -498,6 +514,29 @@
],
}
+cc_library_static {
+ name: "libc_openbsd_large_stack",
+ defaults: ["libc_defaults"],
+ srcs: [
+ "upstream-openbsd/lib/libc/gen/exec.c",
+ "upstream-openbsd/lib/libc/stdio/vfprintf.c",
+ "upstream-openbsd/lib/libc/stdio/vfwprintf.c",
+ "upstream-openbsd/lib/libc/stdio/vfwscanf.c",
+ ],
+ cflags: [
+ "-include openbsd-compat.h",
+ "-Wno-sign-compare",
+ "-Wframe-larger-than=5000",
+ ],
+
+ local_include_dirs: [
+ "stdio",
+ "upstream-openbsd/android/include",
+ "upstream-openbsd/lib/libc/include",
+ "upstream-openbsd/lib/libc/gdtoa/",
+ ],
+}
+
// ========================================================
// libc_openbsd.a - upstream OpenBSD C library code
// ========================================================
@@ -644,10 +683,7 @@
local_include_dirs: [
"private",
- "stdio",
"upstream-openbsd/android/include",
- "upstream-openbsd/lib/libc/include",
- "upstream-openbsd/lib/libc/gdtoa/",
],
name: "libc_openbsd",
@@ -735,7 +771,6 @@
"bionic/strnlen.c",
"bionic/strrchr.cpp",
],
- cflags: ["-Wframe-larger-than=2048"],
arch: {
arm: {
@@ -1333,7 +1368,6 @@
"bionic/wctype.cpp",
"bionic/wmempcpy.cpp",
],
- cflags: ["-Wframe-larger-than=2048"],
multilib: {
lib32: {
@@ -1383,7 +1417,6 @@
"bionic/pthread_sigmask.cpp",
"bionic/pthread_spinlock.cpp",
],
- cflags: ["-Wframe-larger-than=2048"],
cppflags: ["-Wold-style-cast"],
include_dirs: ["bionic/libstdc++/include"],
@@ -1478,9 +1511,11 @@
whole_static_libs: [
"libc_bionic_ndk",
"libc_freebsd",
+ "libc_freebsd_large_stack",
"libc_gdtoa",
"libc_malloc",
"libc_netbsd",
+ "libc_openbsd_large_stack",
"libc_openbsd_ndk",
"libc_stack_protector",
"libc_syscalls",
@@ -1510,10 +1545,12 @@
"libc_bionic_ndk",
"libc_dns",
"libc_freebsd",
+ "libc_freebsd_large_stack",
"libc_gdtoa",
"libc_malloc",
"libc_netbsd",
"libc_openbsd",
+ "libc_openbsd_large_stack",
"libc_openbsd_ndk",
"libc_pthread",
"libc_stack_protector",
diff --git a/libc/include/netdb.h b/libc/include/netdb.h
index 95f0986..816acc5 100644
--- a/libc/include/netdb.h
+++ b/libc/include/netdb.h
@@ -220,10 +220,11 @@
void herror(const char*);
const char* hstrerror(int);
-int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **);
-int getnameinfo(const struct sockaddr *, socklen_t, char *, size_t, char *, size_t, int);
-void freeaddrinfo(struct addrinfo *);
-const char *gai_strerror(int);
+int getaddrinfo(const char*, const char*, const struct addrinfo*, struct addrinfo**);
+/* POSIX getnameinfo uses socklen_t, not size_t, but LP64 sizeof(socklen_t) != sizeof(size_t). */
+int getnameinfo(const struct sockaddr*, socklen_t, char*, size_t, char*, size_t, int);
+void freeaddrinfo(struct addrinfo*);
+const char* gai_strerror(int);
void setservent(int);
__END_DECLS
diff --git a/tests/Android.build.prebuilt.mk b/tests/Android.build.prebuilt.mk
index 09c2366..db2dfe4 100644
--- a/tests/Android.build.prebuilt.mk
+++ b/tests/Android.build.prebuilt.mk
@@ -21,10 +21,10 @@
LOCAL_MODULE_PATH_64 := $(TARGET_OUT_DATA_NATIVE_TESTS)/prebuilt-elf-files
LOCAL_MODULE_CLASS := EXECUTABLES
-LOCAL_MODULE_TARGET_ARCH := arm arm64 x86 x86_64
-
LOCAL_SRC_FILES_arm := prebuilt-elf-files/arm/$(bionic_tests_module)
LOCAL_SRC_FILES_arm64 := prebuilt-elf-files/arm64/$(bionic_tests_module)
LOCAL_SRC_FILES_x86 := prebuilt-elf-files/x86/$(bionic_tests_module)
LOCAL_SRC_FILES_x86_64 := prebuilt-elf-files/x86_64/$(bionic_tests_module)
+LOCAL_SRC_FILES_mips := prebuilt-elf-files/mips/$(bionic_tests_module)
+LOCAL_SRC_FILES_mips64 := prebuilt-elf-files/mips64/$(bionic_tests_module)
include $(BUILD_PREBUILT)
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index ecc2a12..f474ed9 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -1144,7 +1144,7 @@
}
// Bionic specific tests
-#if defined(__BIONIC__) && !defined(__mips__)
+#if defined(__BIONIC__)
#if defined(__LP64__)
#define NATIVE_TESTS_PATH "/nativetest64"
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/mips/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..7973498
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/mips/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..f938d13
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/mips/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..1e8ea7d
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..8fe1f63
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..64f3a88
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..285db43
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..fb1a421
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips/libtest_invalid-zero_shstrndx.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..5984a85
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..d8bab60
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..a2aff50
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..ac4a69c
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..01c229b
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..abcd27b
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..d3aa35f
--- /dev/null
+++ b/tests/prebuilt-elf-files/mips64/libtest_invalid-zero_shstrndx.so
Binary files differ