mirror of
https://gitlab.freedesktop.org/libbsd/libbsd.git
synced 2025-01-08 11:02:24 +01:00
test: Fix nlist() unit test on IA64 and PowerPC 64-bit ELFv1
At least on IA64 and PowerPC 64-bit ELFv1, the functions are stored in the .text sections but they are accessed through a function descriptor stored in a data section, for example for PowerPC 64-bit ELFv1 that section is called .opd. We should take this into account when checking the n_type for the functions we have requested information from nlist(). Rationale-by: James Clarke <jrtc27@jrtc27.com>
This commit is contained in:
parent
415e3cb266
commit
3b2b7938f7
@ -69,8 +69,17 @@ main(int argc, char **argv)
|
||||
rc = nlist(argv[0], nl);
|
||||
assert(rc == 0);
|
||||
|
||||
#if defined(__ia64__) || (defined(__powerpc64__) && _CALL_ELF == 1)
|
||||
/* On IA64 and PowerPC 64-bit ELFv1, the functions are stored in
|
||||
* the .text sections but they are accessed through a function
|
||||
* descriptor stored in a data section, for example for PowerPC
|
||||
* 64-bit that section is called .opd. */
|
||||
assert(nl[0].n_type == (N_DATA | N_EXT));
|
||||
assert(nl[1].n_type == (N_DATA | N_EXT));
|
||||
#else
|
||||
assert(nl[0].n_type == (N_TEXT | N_EXT));
|
||||
assert(nl[1].n_type == (N_TEXT | N_EXT));
|
||||
#endif
|
||||
assert(nl[2].n_type == (N_BSS | N_EXT));
|
||||
assert(nl[3].n_type == (N_DATA | N_EXT));
|
||||
assert(nl[4].n_type == (N_DATA));
|
||||
|
Loading…
Reference in New Issue
Block a user