[ELF] Support R_PPC_ADDR24 (ba foo; bla foo)

GitOrigin-RevId: 3809f4ebabde98bfdc1fdcdad2963a874151820b
diff --git a/ELF/Arch/PPC.cpp b/ELF/Arch/PPC.cpp
index 5b22e6c..aaecef6 100644
--- a/ELF/Arch/PPC.cpp
+++ b/ELF/Arch/PPC.cpp
@@ -222,6 +222,7 @@
   case R_PPC_ADDR16_HA:
   case R_PPC_ADDR16_HI:
   case R_PPC_ADDR16_LO:
+  case R_PPC_ADDR24:
   case R_PPC_ADDR32:
     return R_ABS;
   case R_PPC_DTPREL16:
@@ -345,6 +346,7 @@
     write32(loc, (read32(loc) & ~mask) | (val & mask));
     break;
   }
+  case R_PPC_ADDR24:
   case R_PPC_REL24:
   case R_PPC_LOCAL24PC:
   case R_PPC_PLTREL24: {
diff --git a/test/ELF/ppc32-reloc-addr.s b/test/ELF/ppc32-reloc-addr.s
index 98bd61b..78865b8 100644
--- a/test/ELF/ppc32-reloc-addr.s
+++ b/test/ELF/ppc32-reloc-addr.s
@@ -19,8 +19,13 @@
 # CHECK-LABEL: section .R_PPC_ADDR16_LO:
 # CHECK: addi 4, 4, 4660
 
+.section .R_PPC_ADDR24,"ax",@progbits
+  ba a
+# CHECK-LABEL: section .R_PPC_ADDR24:
+# CHECK: ba 4660
+
 .section .R_PPC_ADDR32,"a",@progbits
   .long a
   .long b
 # HEX-LABEL: section .R_PPC_ADDR32:
-# HEX-NEXT: 100000b4 00001234 000bcdef
+# HEX-NEXT: {{.*}} 00001234 000bcdef