Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update external/libcxx from branch 'ndk-release-r19' to e3b997f05256a178bb87a33d9310a46dff9f2a1e - Adapt to layout changes again. Test: ndk/checkbuild.py Bug: android/ndk#780 Change-Id: I514caab36879fdcd3fda8b3740f3cf8efce90710 * Update ndk from branch 'ndk-release-r19' to 91ca6df1f9942b77b31ceb3ce543379b22cace2b - Merge changes from topic "cp" into ndk-release-r19 * changes: Remove ndk-depends. ndk-stack: switch back to toolchains/llvm. ndk-stack: switch to python. Move ndk-gdb out of HostTools. Put the new toolchain back in to toolchains/llvm. - Remove ndk-depends. Judging by the lack of interest on the web, it seems like this probably isn't much used. ReLinker (https://github.com/KeepSafe/ReLinker) seems like a better solution to native library loading problems anyway. Rather than rewrite ndk-depends in Python now, let's see if anyone actually still has a reasonable use for it. (Folks who just want readelf/llvm-readobj should probably just be using those already.) Bug: http://b/22085867 Test: builds Change-Id: I938ddd55586c4ff8768bc7b5e0b356f1c31abed1 - ndk-stack: switch back to toolchains/llvm. Also update the change log to admit that we've rewritten ndk-stack. Bug: http://b/22085867 Test: manual Change-Id: Ideba39bb96bcd631231235b69e5476e524bae567 - ndk-stack: switch to python. We've started to see cases (https://issuetracker.google.com/117306194) where addr2line chokes on DWARF information, so it's probably time to switch to llvm-symbolizer. While doing so, we may as well just switch to a small python script. This changes the output format, because the old format was significantly less useful. In addition to causing ridiculously long lines, it didn't handle inlining. This new script simply outputs whatever llvm-symbolizer has to say, on as many lines as llvm-symbolizer thinks are necessary to accurately represent the situation, rather than trying to parse and reformat it. This script also copies the `Abort message:` line, which is often the most useful line in the tombstone. Why not reuse the platform's `stack`? Because making that work and sharing the code seems like a lot of work for no immediate benefit: the NDK's needs seem a lot simpler, and the obvious improvements one could make to ndk-stack (automatically finding the symbols given an ndk-build/cmake project) aren't in the platform tool anyway. A python script as short as this hopefully encourages folks to roll their own better tools that fit in with however they keep track of their published builds. Example input: 10-24 19:19:57.714 5340 5340 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 10-24 19:19:57.714 5340 5340 F DEBUG : Build fingerprint: 'Android/hikey960/hikey960:Q/PI/enh10051658:userdebug/test-keys' 10-24 19:19:57.714 5340 5340 F DEBUG : Revision: '0' 10-24 19:19:57.714 5340 5340 F DEBUG : ABI: 'arm' 10-24 19:19:57.714 5340 5340 F DEBUG : pid: 5336, tid: 5336, name: crasher >>> crasher <<< 10-24 19:19:57.714 5340 5340 F DEBUG : signal 35 (<debuggerd signal>), code -1 (SI_QUEUE), fault addr -------- 10-24 19:19:57.715 5340 5340 F DEBUG : Abort message: 'attempted to close file descriptor 3, expected to be unowned, actually owned by FILE* 0xe970400c' 10-24 19:19:57.715 5340 5340 F DEBUG : r0 00000000 r1 000014d8 r2 00000023 r3 ffa73890 10-24 19:19:57.715 5340 5340 F DEBUG : r4 000014d8 r5 ffa738a4 r6 e98efc70 r7 0000016b 10-24 19:19:57.715 5340 5340 F DEBUG : r8 ffa73688 r9 00000014 r10 000014d8 r11 00000000 10-24 19:19:57.715 5340 5340 F DEBUG : ip ffa73890 sp ffa73680 lr e9874737 pc e987474a 10-24 19:19:57.719 5340 5340 F DEBUG : 10-24 19:19:57.719 5340 5340 F DEBUG : backtrace: 10-24 19:19:57.719 5340 5340 F DEBUG : #00 pc 0002e74a /system/lib/libc.so (fdsan_error(char const*, ...)+266) 10-24 19:19:57.719 5340 5340 F DEBUG : #1 pc 0002e553 /system/lib/libc.so (android_fdsan_close_with_tag+386) 10-24 19:19:57.719 5340 5340 F DEBUG : #2 pc 0002ec37 /system/lib/libc.so (close+6) 10-24 19:19:57.719 5340 5340 F DEBUG : #03 pc 00001c93 /system/bin/crasher (do_action+786) 10-24 19:19:57.719 5340 5340 F DEBUG : #04 pc 00002a35 /system/bin/crasher (main+56) 10-24 19:19:57.719 5340 5340 F DEBUG : #05 pc 0009695d /system/lib/libc.so (__libc_init+60) 10-24 19:19:57.719 5340 5340 F DEBUG : #06 pc 0000180f /system/bin/crasher (_start_main+38) 10-24 19:19:57.719 5340 5340 F DEBUG : #07 pc 00000306 <anonymous:e9c56000> Example output: ********** Crash dump: ********** Build fingerprint: 'Android/hikey960/hikey960:Q/PI/enh10051658:userdebug/test-keys' Abort message: 'attempted to close file descriptor 3, expected to be unowned, actually owned by FILE* 0xe970400c' #00 0x0002e74a /system/lib/libc.so (fdsan_error(char const*, ...)+266) fdsan_error(char const*, ...) bionic/libc/private/bionic_inline_raise.h:0:3 #1 0x0002e553 /system/lib/libc.so (android_fdsan_close_with_tag+386) android_fdsan_close_with_tag bionic/libc/bionic/fdsan.cpp:0:7 #2 0x0002ec37 /system/lib/libc.so (close+6) close bionic/libc/bionic/fdsan.cpp:381:12 #03 0x00001c93 /system/bin/crasher (do_action+786) #04 0x00002a35 /system/bin/crasher (main+56) #05 0x0009695d /system/lib/libc.so (__libc_init+60) __libc_init bionic/libc/bionic/libc_init_dynamic.cpp:136:8 #06 0x0000180f /system/bin/crasher (_start_main+38) #07 0x00000306 <anonymous:e9c56000> Bug: http://b/22085867 Test: ran manually Change-Id: I80b77f13c32a92adb972191b7b9548249e58b3ce - Move ndk-gdb out of HostTools. Test: ./checkbuild.py ndk-gdb Test: ./checkbuild.py Bug: None Change-Id: Ib4cfa782a27a551115e54204205f484e80990d7b - Put the new toolchain back in to toolchains/llvm. Moving this to an entirely separate directory will likely be too disruptive. While not very difficult to fix in any given build system, there's a significant number of third-party projects that do not even use standalone toolchains. Those few of them using Clang can be kept working for the time being (they'll still break when we remove $NDK/sysroot if they're using `--sysroot` like they should be rather than `-isystem`). This also saves us a small amount of space in the transition period. Although we still need to duplicate binutils, libc++, the sysroot, etc, we can at least dedup Clang. Test: ./checkbuild.py && ./run_tests.py Bug: android/ndk#780 Change-Id: I5760e55240fc3ff0ed2fe5385b8dca9394327dd1
- Loading branch information