1diff --git a/gdb-7.1.x/gdb/gdbserver/server.c b/gdb-7.1.x/gdb/gdbserver/server.c 2index a03f877..c4214f9 100644 3--- a/gdb-7.1.x/gdb/gdbserver/server.c 4+++ b/gdb-7.1.x/gdb/gdbserver/server.c 5@@ -76,12 +76,14 @@ pid_t old_foreground_pgrp; 6 7 /* Hand back terminal ownership to the original foreground group. */ 8 9+#ifndef __ANDROID__ 10 static void 11 restore_old_foreground_pgrp (void) 12 { 13 tcsetpgrp (terminal_fd, old_foreground_pgrp); 14 } 15 #endif 16+#endif 17 18 /* Set if you want to disable optional thread related packets support 19 in gdbserver, for the sake of testing GDB against stubs that don't 20@@ -257,11 +259,13 @@ start_inferior (char **argv) 21 #ifdef SIGTTOU 22 signal (SIGTTOU, SIG_IGN); 23 signal (SIGTTIN, SIG_IGN); 24+#ifndef __ANDROID__ 25 terminal_fd = fileno (stderr); 26 old_foreground_pgrp = tcgetpgrp (terminal_fd); 27 tcsetpgrp (terminal_fd, signal_pid); 28 atexit (restore_old_foreground_pgrp); 29 #endif 30+#endif 31 32 if (wrapper_argv != NULL) 33 { 34diff --git a/gdb-7.3.x/gdb/gdbserver/config.in b/gdb-7.3.x/gdb/gdbserver/config.in 35index 4882d80..62d2fe1 100644 36--- a/gdb-7.3.x/gdb/gdbserver/config.in 37+++ b/gdb-7.3.x/gdb/gdbserver/config.in 38@@ -41,6 +41,12 @@ 39 /* Define to 1 if you have the `dladdr' function. */ 40 #undef HAVE_DLADDR 41 42+/* Define to 1 if the system has the type `Elf32_auxv_t'. */ 43+#undef HAVE_ELF32_AUXV_T 44+ 45+/* Define to 1 if the system has the type `Elf64_auxv_t'. */ 46+#undef HAVE_ELF64_AUXV_T 47+ 48 /* Define if <sys/procfs.h> has elf_fpregset_t. */ 49 #undef HAVE_ELF_FPREGSET_T 50 51@@ -257,6 +257,9 @@ 52 when building for Cygwin. */ 53 #undef USE_WIN32API 54 55+/* Define to 1 if you have the <sys/un.h> header file. */ 56+#undef HAVE_SYS_UN_H 57+ 58 /* Define if an XML target description is available. */ 59 #undef USE_XML 60 61diff --git a/gdb-7.3.x/gdb/gdbserver/configure b/gdb-7.3.x/gdb/gdbserver/configure 62index 110e406..0696030 100755 63--- a/gdb-7.3.x/gdb/gdbserver/configure 64+++ b/gdb-7.3.x/gdb/gdbserver/configure 65@@ -587,6 +587,9 @@ ac_includes_default="\ 66 #endif 67 #ifdef HAVE_UNISTD_H 68 # include <unistd.h> 69+#endif 70+#ifdef HAVE_SYS_SOCKET_H 71+# include <sys/socket.h> 72 #endif" 73 74 ac_subst_vars='LTLIBOBJS 75@@ -3994,7 +3997,7 @@ _ACEOF 76 77 fi 78 79-for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h proc_service.h sys/procfs.h thread_db.h linux/elf.h stdlib.h unistd.h errno.h fcntl.h signal.h sys/file.h malloc.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h sys/wait.h 80+for ac_header in sgtty.h termio.h termios.h sys/reg.h string.h proc_service.h sys/procfs.h thread_db.h linux/elf.h stdlib.h unistd.h errno.h fcntl.h signal.h sys/file.h malloc.h sys/ioctl.h netinet/in.h sys/socket.h netdb.h netinet/tcp.h arpa/inet.h sys/wait.h sys/un.h 81 do : 82 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` 83 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" 84@@ -4319,6 +4319,30 @@ _ACEOF 85 fi 86 87 88+ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h> 89+ 90+" 91+if test "x$ac_cv_type_Elf32_auxv_t" = x""yes; then : 92+ 93+cat >>confdefs.h <<_ACEOF 94+#define HAVE_ELF32_AUXV_T 1 95+_ACEOF 96+ 97+ 98+fi 99+ac_fn_c_check_type "$LINENO" "Elf64_auxv_t" "ac_cv_type_Elf64_auxv_t" "#include <elf.h> 100+ 101+" 102+if test "x$ac_cv_type_Elf64_auxv_t" = x""yes; then : 103+ 104+cat >>confdefs.h <<_ACEOF 105+#define HAVE_ELF64_AUXV_T 1 106+_ACEOF 107+ 108+ 109+fi 110+ 111+ 112 # Check whether --enable-googleisms was given. 113 if test "${enable_googleisms+set}" = set; then : 114 enableval=$enable_googleisms; case "${enableval}" in 115diff --git a/gdb-7.3.x/gdb/gdbserver/configure.ac b/gdb-7.3.x/gdb/gdbserver/configure.ac 116index c70f3cf..d78f267 100644 117--- a/gdb-7.3.x/gdb/gdbserver/configure.ac 118+++ b/gdb-7.3.x/gdb/gdbserver/configure.ac 119@@ -42,7 +42,7 @@ AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl 120 stdlib.h unistd.h dnl 121 errno.h fcntl.h signal.h sys/file.h malloc.h dnl 122 sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl 123- netinet/tcp.h arpa/inet.h sys/wait.h) 124+ netinet/tcp.h arpa/inet.h sys/wait.h sys/un.h) 125 AC_CHECK_FUNCS(pread pwrite pread64) 126 AC_REPLACE_FUNCS(memmem vasprintf vsnprintf) 127 128diff --git a/gdb-7.3.x/gdb/gdbserver/linux-low.c b/gdb-7.3.x/gdb/gdbserver/linux-low.c 129index e65ec96..f91129f 100644 130--- a/gdb-7.3.x/gdb/gdbserver/linux-low.c 131+++ b/gdb-7.3.x/gdb/gdbserver/linux-low.c 132@@ -110,6 +110,36 @@ 133 #endif 134 #endif 135 136+#ifndef HAVE_ELF32_AUXV_T 137+/* Copied from glibc's elf.h. */ 138+typedef struct 139+{ 140+ uint32_t a_type; /* Entry type */ 141+ union 142+ { 143+ uint32_t a_val; /* Integer value */ 144+ /* We use to have pointer elements added here. We cannot do that, 145+ though, since it does not work when using 32-bit definitions 146+ on 64-bit platforms and vice versa. */ 147+ } a_un; 148+} Elf32_auxv_t; 149+#endif 150+ 151+#ifndef HAVE_ELF64_AUXV_T 152+/* Copied from glibc's elf.h. */ 153+typedef struct 154+{ 155+ uint64_t a_type; /* Entry type */ 156+ union 157+ { 158+ uint64_t a_val; /* Integer value */ 159+ /* We use to have pointer elements added here. We cannot do that, 160+ though, since it does not work when using 32-bit definitions 161+ on 64-bit platforms and vice versa. */ 162+ } a_un; 163+} Elf64_auxv_t; 164+#endif 165+ 166 /* ``all_threads'' is keyed by the LWP ID, which we use as the GDB protocol 167 representation of the thread ID. 168 169@@ -3816,7 +3846,7 @@ regsets_fetch_inferior_registers (struct regcache *regcache) 170 data = buf; 171 172 #ifndef __sparc__ 173- res = ptrace (regset->get_request, pid, nt_type, data); 174+ res = ptrace (regset->get_request, pid, (PTRACE_ARG3_TYPE)nt_type, data); 175 #else 176 res = ptrace (regset->get_request, pid, data, nt_type); 177 #endif 178@@ -3889,7 +3919,7 @@ regsets_store_inferior_registers (struct regcache *regcache) 179 data = buf; 180 181 #ifndef __sparc__ 182- res = ptrace (regset->get_request, pid, nt_type, data); 183+ res = ptrace (regset->get_request, pid, (PTRACE_ARG3_TYPE)nt_type, data); 184 #else 185 res = ptrace (regset->get_request, pid, &iov, data); 186 #endif 187@@ -3901,7 +3931,7 @@ regsets_store_inferior_registers (struct regcache *regcache) 188 189 /* Only now do we write the register set. */ 190 #ifndef __sparc__ 191- res = ptrace (regset->set_request, pid, nt_type, data); 192+ res = ptrace (regset->set_request, pid, (PTRACE_ARG3_TYPE)nt_type, data); 193 #else 194 res = ptrace (regset->set_request, pid, data, nt_type); 195 #endif 196diff --git a/gdb-7.3.x/gdb/gdbserver/linux-x86-low.c b/gdb-7.3.x/gdb/gdbserver/linux-x86-low.c 197index 69c6b57..cdc0a18 100644 198--- a/gdb-7.3.x/gdb/gdbserver/linux-x86-low.c 199+++ b/gdb-7.3.x/gdb/gdbserver/linux-x86-low.c 200@@ -57,8 +57,13 @@ static const char *xmltarget_amd64_linux_no_xml = "@<target>\ 201 </target>"; 202 #endif 203 204+#ifdef HAVE_SYS_REG_H 205 #include <sys/reg.h> 206+#endif 207+#ifdef HAVE_SYS_PROCFS_H 208 #include <sys/procfs.h> 209+#endif 210+ 211 #include <sys/ptrace.h> 212 #include <sys/uio.h> 213 214@@ -80,6 +85,9 @@ static const char *xmltarget_amd64_linux_no_xml = "@<target>\ 215 #define PTRACE_ARCH_PRCTL 30 216 #endif 217 218+#define PTRACE_ARG3_TYPE void* 219+#define PTRACE_ARG4_TYPE void* 220+ 221 /* The following definitions come from prctl.h, but may be absent 222 for certain configurations. */ 223 #ifndef ARCH_GET_FS 224@@ -187,7 +195,7 @@ ps_get_thread_area (const struct ps_prochandle *ph, 225 unsigned int desc[4]; 226 227 if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, 228- (void *) (intptr_t) idx, (unsigned long) &desc) < 0) 229+ (void *) (intptr_t) idx, (PTRACE_ARG4_TYPE) &desc) < 0) 230 return PS_ERR; 231 232 *(int *)base = desc[1]; 233@@ -233,7 +241,7 @@ x86_get_thread_area (int lwpid, CORE_ADDR *addr) 234 235 if (ptrace (PTRACE_GET_THREAD_AREA, 236 lwpid_of (lwp), 237- (void *) (long) idx, (unsigned long) &desc) < 0) 238+ (void *) (long) idx, (PTRACE_ARG4_TYPE) &desc) < 0) 239 return -1; 240 241 *addr = desc[1]; 242@@ -441,7 +449,7 @@ x86_linux_dr_get (ptid_t ptid, int regnum) 243 244 errno = 0; 245 value = ptrace (PTRACE_PEEKUSER, tid, 246- offsetof (struct user, u_debugreg[regnum]), 0); 247+ (PTRACE_ARG3_TYPE)offsetof (struct user, u_debugreg[regnum]), 0); 248 if (errno != 0) 249 error ("Couldn't read debug register"); 250 251@@ -457,7 +465,7 @@ x86_linux_dr_set (ptid_t ptid, int regnum, unsigned long value) 252 253 errno = 0; 254 ptrace (PTRACE_POKEUSER, tid, 255- offsetof (struct user, u_debugreg[regnum]), value); 256+ (PTRACE_ARG3_TYPE)offsetof (struct user, u_debugreg[regnum]), (PTRACE_ARG4_TYPE)value); 257 if (errno != 0) 258 error ("Couldn't write debug register"); 259 } 260@@ -963,7 +971,7 @@ x86_linux_update_xmltarget (void) 261 { 262 elf_fpxregset_t fpxregs; 263 264- if (ptrace (PTRACE_GETFPXREGS, pid, 0, (int) &fpxregs) < 0) 265+ if (ptrace (PTRACE_GETFPXREGS, pid, 0, (PTRACE_ARG4_TYPE) &fpxregs) < 0) 266 { 267 have_ptrace_getfpxregs = 0; 268 x86_xcr0 = I386_XSTATE_X87_MASK; 269@@ -1018,7 +1026,7 @@ x86_linux_update_xmltarget (void) 270 iov.iov_len = sizeof (xstateregs); 271 272 /* Check if PTRACE_GETREGSET works. */ 273- if (ptrace (PTRACE_GETREGSET, pid, (unsigned int) NT_X86_XSTATE, 274+ if (ptrace (PTRACE_GETREGSET, pid, (PTRACE_ARG3_TYPE) NT_X86_XSTATE, 275 &iov) < 0) 276 { 277 have_ptrace_getregset = 0; 278diff --git a/gdb-7.3.x/gdb/gdbserver/remote-utils.c b/gdb-7.3.x/gdb/gdbserver/remote-utils.c 279index 02f13f4..3ce10f7 100644 280--- a/gdb-7.3.x/gdb/gdbserver/remote-utils.c 281+++ b/gdb-7.3.x/gdb/gdbserver/remote-utils.c 282@@ -61,10 +61,12 @@ 283 #if HAVE_ERRNO_H 284 #include <errno.h> 285 #endif 286- 287 #if USE_WIN32API 288 #include <winsock2.h> 289 #endif 290+#if HAVE_SYS_UN_H 291+#include <sys/un.h> 292+#endif 293 294 #if __QNX__ 295 #include <sys/iomgr.h> 296@@ -240,6 +242,45 @@ remote_open (char *name) 297 { 298 char *port_str; 299 300+#ifdef HAVE_SYS_UN_H 301+ if (name[0] == '+') 302+ { 303+#ifdef USE_WIN32API 304+ error ("Only <host>:<port> is supported on this platform."); 305+#else 306+ struct sockaddr_un sockaddr; 307+ socklen_t sockaddrlen; 308+ 309+ name += 1; // skip the initial + 310+ 311+ listen_desc = socket (AF_UNIX, SOCK_STREAM, 0); 312+ if (listen_desc < 0) 313+ perror_with_name ("Could not create Unix-domain socket"); 314+ 315+ memset (&sockaddr, 0, sizeof sockaddr); 316+ sockaddr.sun_family = AF_UNIX; 317+ strlcpy(sockaddr.sun_path, name, sizeof sockaddr.sun_path); 318+ 319+ unlink (sockaddr.sun_path); 320+ sockaddrlen = sizeof(sockaddr.sun_family) + strlen(sockaddr.sun_path) + 1; 321+ if (bind (listen_desc, (struct sockaddr *)&sockaddr, sockaddrlen) < 0) 322+ perror_with_name ("Could not bind to Unix-domain socket"); 323+ if (listen (listen_desc, 1) < 0) 324+ perror_with_name ("Could not listen to Unix-domain socket"); 325+ 326+ fprintf (stderr, "Listening on Unix socket %s\n", sockaddr.sun_path); 327+ fflush (stderr); 328+ 329+ /* Register the event loop handler. */ 330+ add_file_handler (listen_desc, handle_accept_event, NULL); 331+ 332+ transport_is_reliable = 1; 333+#endif 334+ } 335+ else 336+#endif /* HAVE_SYS_UN_H */ 337+ { 338+ 339 port_str = strchr (name, ':'); 340 341 if (remote_connection_is_stdio (name)) 342@@ -392,6 +433,7 @@ remote_open (char *name) 343 344 transport_is_reliable = 1; 345 } 346+ } 347 } 348 349 void 350diff --git a/gdb-7.3.x/gdb/gdbserver/server.c b/gdb-7.3.x/gdb/gdbserver/server.c 351index 5148dc8..9daceff 100644 352--- a/gdb-7.3.x/gdb/gdbserver/server.c 353+++ b/gdb-7.3.x/gdb/gdbserver/server.c 354@@ -75,12 +75,14 @@ pid_t old_foreground_pgrp; 355 356 /* Hand back terminal ownership to the original foreground group. */ 357 358+#ifndef __ANDROID__ 359 static void 360 restore_old_foreground_pgrp (void) 361 { 362- tcsetpgrp (terminal_fd, old_foreground_pgrp); 363+ tcsetpgrp (terminal_fd, old_foreground_pgrp); 364 } 365 #endif 366+#endif 367 368 /* Set if you want to disable optional thread related packets support 369 in gdbserver, for the sake of testing GDB against stubs that don't 370@@ -266,11 +268,13 @@ start_inferior (char **argv) 371 #ifdef SIGTTOU 372 signal (SIGTTOU, SIG_IGN); 373 signal (SIGTTIN, SIG_IGN); 374+#ifndef __ANDROID__ 375 terminal_fd = fileno (stderr); 376 old_foreground_pgrp = tcgetpgrp (terminal_fd); 377 tcsetpgrp (terminal_fd, signal_pid); 378 atexit (restore_old_foreground_pgrp); 379 #endif 380+#endif 381 382 if (wrapper_argv != NULL) 383 { 384diff --git a/gdb-7.3.x/gdb/gdbserver/thread-db.c b/gdb-7.3.x/gdb/gdbserver/thread-db.c 385index 741c48b..3467b64 100644 386--- a/gdb-7.3.x/gdb/gdbserver/thread-db.c 387+++ b/gdb-7.3.x/gdb/gdbserver/thread-db.c 388@@ -565,7 +565,7 @@ thread_db_load_search (void) 389 tdb->td_symbol_list_p = &td_symbol_list; 390 391 /* This is required only when thread_db_use_events is on. */ 392- tdb->td_thr_event_enable_p = &td_thr_event_enable; 393+ tdb->td_thr_event_enable_p = (void*)&td_thr_event_enable; 394 395 /* These are not essential. */ 396 tdb->td_ta_event_addr_p = &td_ta_event_addr; 397diff --git a/gdb-7.3.x/include/elf/common.h b/gdb-7.3.x/include/elf/common.h 398index 52ce9a5..a01e40c 100644 399--- a/gdb-7.3.x/include/elf/common.h 400+++ b/gdb-7.3.x/include/elf/common.h 401@@ -35,7 +35,9 @@ 402 /* Fields in e_ident[]. */ 403 404 #define EI_MAG0 0 /* File identification byte 0 index */ 405+#ifndef ELFMAG0 406 #define ELFMAG0 0x7F /* Magic number byte 0 */ 407+#endif 408 409 #define EI_MAG1 1 /* File identification byte 1 index */ 410 #define ELFMAG1 'E' /* Magic number byte 1 */ 411@@ -82,7 +84,9 @@ 412 413 #define EI_ABIVERSION 8 /* ABI version */ 414 415+#ifndef EI_PAD 416 #define EI_PAD 9 /* Start of padding bytes */ 417+#endif 418 419 420 /* Values for e_type, which identifies the object file type. */ 421@@ -94,8 +98,12 @@ 422 #define ET_CORE 4 /* Core file */ 423 #define ET_LOOS 0xFE00 /* Operating system-specific */ 424 #define ET_HIOS 0xFEFF /* Operating system-specific */ 425+#ifndef ET_LOPROC 426 #define ET_LOPROC 0xFF00 /* Processor-specific */ 427+#endif 428+#ifndef ET_HIPROC 429 #define ET_HIPROC 0xFFFF /* Processor-specific */ 430+#endif 431 432 /* Values for e_machine, which identifies the architecture. These numbers 433 are officially assigned by registry@sco.com. See below for a list of 434@@ -370,7 +378,9 @@ 435 #define EM_CYGNUS_V850 0x9080 436 437 /* old S/390 backend magic number. Written in the absence of an ABI. */ 438+#ifndef EM_S390_OLD 439 #define EM_S390_OLD 0xa390 440+#endif 441 442 /* Old, unofficial value for Xtensa. */ 443 #define EM_XTENSA_OLD 0xabc7 444@@ -423,18 +433,28 @@ 445 #define PT_LOOS 0x60000000 /* OS-specific */ 446 #define PT_HIOS 0x6fffffff /* OS-specific */ 447 #define PT_LOPROC 0x70000000 /* Processor-specific */ 448+#ifndef PT_HIPROC 449 #define PT_HIPROC 0x7FFFFFFF /* Processor-specific */ 450+#endif 451 452+#ifndef PT_GNU_EH_FRAME 453 #define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550) /* Frame unwind information */ 454+#endif 455 #define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */ 456 #define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */ 457 #define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */ 458 459 /* Program segment permissions, in program header p_flags field. */ 460 461+#ifndef PF_X 462 #define PF_X (1 << 0) /* Segment is executable */ 463+#endif 464+#ifndef PF_W 465 #define PF_W (1 << 1) /* Segment is writable */ 466+#endif 467+#ifndef PF_R 468 #define PF_R (1 << 2) /* Segment is readable */ 469+#endif 470 /* #define PF_MASKOS 0x0F000000 *//* OS-specific reserved bits */ 471 #define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ 472 #define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */ 473@@ -480,16 +500,26 @@ 474 #define SHT_GNU_versym SHT_SUNW_versym 475 476 #define SHT_LOPROC 0x70000000 /* Processor-specific semantics, lo */ 477+#ifndef SHT_HIPROC 478 #define SHT_HIPROC 0x7FFFFFFF /* Processor-specific semantics, hi */ 479+#endif 480 #define SHT_LOUSER 0x80000000 /* Application-specific semantics */ 481 /* #define SHT_HIUSER 0x8FFFFFFF *//* Application-specific semantics */ 482+#ifndef SHT_HIUSER 483 #define SHT_HIUSER 0xFFFFFFFF /* New value, defined in Oct 4, 1999 Draft */ 484+#endif 485 486 /* Values for section header, sh_flags field. */ 487 488+#ifndef SHF_WRITE 489 #define SHF_WRITE (1 << 0) /* Writable data during execution */ 490+#endif 491+#ifndef SHF_ALLOC 492 #define SHF_ALLOC (1 << 1) /* Occupies memory during execution */ 493+#endif 494+#ifndef SHF_EXECINSTR 495 #define SHF_EXECINSTR (1 << 2) /* Executable machine instructions */ 496+#endif 497 #define SHF_MERGE (1 << 4) /* Data in this section can be merged */ 498 #define SHF_STRINGS (1 << 5) /* Contains null terminated character strings */ 499 #define SHF_INFO_LINK (1 << 6) /* sh_info holds section header table index */ 500@@ -500,7 +530,9 @@ 501 502 /* #define SHF_MASKOS 0x0F000000 *//* OS-specific semantics */ 503 #define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */ 504+#ifndef SHF_MASKPROC 505 #define SHF_MASKPROC 0xF0000000 /* Processor-specific semantics */ 506+#endif 507 508 /* This used to be implemented as a processor specific section flag. 509 We just make it generic. */ 510@@ -607,17 +639,29 @@ 511 which contains the symbol binding and symbol type. The STB_ and STT_ 512 defines identify the binding and type. */ 513 514+#ifndef ELF_ST_BIND 515 #define ELF_ST_BIND(val) (((unsigned int)(val)) >> 4) 516+#endif 517+#ifndef ELF_ST_TYPE 518 #define ELF_ST_TYPE(val) ((val) & 0xF) 519+#endif 520 #define ELF_ST_INFO(bind,type) (((bind) << 4) + ((type) & 0xF)) 521 522 /* The 64bit and 32bit versions of these macros are identical, but 523 the ELF spec defines them, so here they are. */ 524+#ifndef ELF32_ST_BIND 525 #define ELF32_ST_BIND ELF_ST_BIND 526+#endif 527+#ifndef ELF32_ST_TYPE 528 #define ELF32_ST_TYPE ELF_ST_TYPE 529+#endif 530 #define ELF32_ST_INFO ELF_ST_INFO 531+#ifndef ELF64_ST_BIND 532 #define ELF64_ST_BIND ELF_ST_BIND 533+#endif 534+#ifndef ELF64_ST_TYPE 535 #define ELF64_ST_TYPE ELF_ST_TYPE 536+#endif 537 #define ELF64_ST_INFO ELF_ST_INFO 538 539 /* This macro disassembles and assembles a symbol's visibility into 540@@ -667,8 +711,12 @@ 541 542 /* Relocation info handling macros. */ 543 544+#ifndef ELF32_R_SYM 545 #define ELF32_R_SYM(i) ((i) >> 8) 546+#endif 547+#ifndef ELF32_R_TYPE 548 #define ELF32_R_TYPE(i) ((i) & 0xff) 549+#endif 550 #define ELF32_R_INFO(s,t) (((s) << 8) + ((t) & 0xff)) 551 552 #define ELF64_R_SYM(i) ((i) >> 32) 553