asm("br %0, 1f\n\t" ".weak __load_address_undefined\n\t" "br $0, __load_address_undefined\n" "1:"
asm("br %0, 1f\n" "0:\n\t" "br $0, 2f\n" "1:\n\t" ".data\n" "2:\n\t" ".quad 0b\n\t" ".previous"
elf_machine_load_address (void){  /* NOTE: While it is generally unfriendly to put data in the text     segment, it is only slightly less so when the "data" is an     instruction.  While we don't have to worry about GLD just yet, an     optimizing linker might decide that our "data" is an unreachable     instruction and throw it away -- with the right switches, DEC's     linker will do this.  What ought to happen is we should add     something to GAS to allow us access to the new GPREL_HI32/LO32     relocation types stolen from OSF/1 3.0.  */  /* This code relies on the fact that BRADDR relocations do not     appear in dynamic relocation tables.  Not that that would be very     useful anyway -- br/bsr has a 4MB range and the shared libraries     are usually many many terabytes away.  */  Elf64_Addr dot;  long int zero_disp;  asm("br %0, 1f\n\t"      ".weak __load_address_undefined\n\t"      "br $0, __load_address_undefined\n"      "1:"      : "=r"(dot));  zero_disp = *(int *)dot;  zero_disp = (zero_disp << 43) >> 41;  return dot + 4 + zero_disp;}