Skip to content

Commit

Permalink
[gn build] Try to fix build on linux after std=c++17 switch
Browse files Browse the repository at this point in the history
glibc annotates `process_vm_readv` with `__THROW`.
lldb/include/lldb/Host/linux/Uio.h and
lldb/source/Host/linux/LibcGlue.cpp don't.

Having a mismatch causes an error with c++17:

    ../../lldb/source/Host/linux/LibcGlue.cpp:18:9:
        error: 'process_vm_readv' is missing exception specification 'throw()'
    ssize_t process_vm_readv(::pid_t pid, const struct iovec *local_iov,
            ^
    ../../lldb/include/lldb/Host/linux/Uio.h:18:9:
        note: previous declaration is here
    ssize_t process_vm_readv(::pid_t pid, const struct iovec *local_iov,
            ^

The diagnostic is a bit misleading, since the previous declaration
in the sysroot (in usr/include/x76_64-linux-gnu/bits/uio-ext.h) is
what has the `__THROW`.

In the cmake build, cmake sets `HAVE_PROCESS_VM_READV` correctly based
on header probing.

In the GN build, just set it to 1 unconditionally on linux. If that
turns out to not be good enough everywhere, we'll have to add a GN arg
for this.

(I'm also setting it to 1 on Android. I'm not sure if that's correct --
but we don't build lldb for Android anyways.)
  • Loading branch information
nico committed Aug 6, 2022
1 parent f7b73b7 commit 547c551
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions llvm/utils/gn/secondary/lldb/include/lldb/Host/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,14 @@ write_cmake_config("Config") {
}

if (current_os == "linux" || current_os == "android") {
values += [ "HAVE_PPOLL=1" ]
values += [
"HAVE_PPOLL=1",
"HAVE_PROCESS_VM_READV=1",
]
} else {
values += [ "HAVE_PPOLL=" ]
values += [
"HAVE_PPOLL=",
"HAVE_PROCESS_VM_READV=",
]
}
}

0 comments on commit 547c551

Please sign in to comment.