diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-02-08 21:29:31 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-02-09 20:48:22 +0800 |
commit | 75c0fb3644a43da6299660799d6c7ebbbe6fc4b7 (patch) | |
tree | 8aa14cd42d9b8d2a028836918e588c394bbc400a /absl/log/stripping_test.cc | |
parent | 87ca79e3186203c8277d9ebc6292f0054cfa1c2f (diff) | |
download | abseil-hurd.tar.gz abseil-hurd.tar.bz2 abseil-hurd.zip |
Port abseil to GNU/Hurd.hurd
abseil has failed to build on GNU/Hurd for a long time. Now
let's make it work! :)
Note that `__GNU__` is the macro for detecting GNU/Hurd. And
`__MACH__` is also defined there besides on Apple platform.
They are both "mach" but with different implementation and
platform details. Here are the works,
* Mark platform features (not) supported by GNU/Hurd.
* Supports `mmap` and `write`.
* Not supports `vdso`. It's specific to Linux.
* Not supports `ELF_SYMBOLIZE` for now. GNU/Hurd uses ELF as
the binary format. But symbolizing in abseil relies on
reading object file path from `/proc/self/task/<pid>/maps`
(Linux specific) or `/proc/self/maps`. GNU/Hurd does have
the latter. However, due to its micro-kernel design, it's
currently unable to get the file path info there.
* Disable stack consumption measurement. The problem behind
it is that GNU/Hurd uses a very different way to implement
signal handling. Due to compiler behavior, it is
impossible to get a stable, valid and reliable statictic
data. In my test environment, it's 96 bytes (< 100) for
current codes.
* GNU/Hurd uses different errno and messages than Linux. So
related things are adjusted accordingly.
* Fix a misuse of `__MACH__`, which should actually be
`__APPLE__`.
* Fix a missing including of `signal.h` for using `SIGABRT`.
Otherwise compilation will fail with undefined symbol error
on GNU/Hurd.
Signed-off-by: Yuqian Yang <crupest@crupest.life>
Diffstat (limited to 'absl/log/stripping_test.cc')
-rw-r--r-- | absl/log/stripping_test.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/absl/log/stripping_test.cc b/absl/log/stripping_test.cc index 271fae1d..20231b9f 100644 --- a/absl/log/stripping_test.cc +++ b/absl/log/stripping_test.cc @@ -33,7 +33,7 @@ #include <stdio.h> -#if defined(__MACH__) +#if defined(__APPLE__) #include <mach-o/dyld.h> #elif defined(_WIN32) #include <Windows.h> @@ -191,7 +191,7 @@ class StrippingTest : public ::testing::Test { absl::FPrintF(stderr, "Failed to open /pkg/bin/<binary name>: %s\n", err); } return fp; -#elif defined(__MACH__) +#elif defined(__APPLE__) uint32_t size = 0; int ret = _NSGetExecutablePath(nullptr, &size); if (ret != -1) { |