(self)
| 341 | ) |
| 342 | |
| 343 | def _emit_jit_symbol_table(self) -> None: |
| 344 | got = len(self.data.body) |
| 345 | for s, offset in self._jit_symbol_table.items(): |
| 346 | if s in self.symbols: |
| 347 | value, addend = self.symbols[s] |
| 348 | symbol = None |
| 349 | else: |
| 350 | value, symbol = symbol_to_value(s) |
| 351 | addend = 0 |
| 352 | self.data.holes.append( |
| 353 | Hole(got + offset, "R_X86_64_64", value, symbol, addend) |
| 354 | ) |
| 355 | value_part = value.name if value is not HoleValue.ZERO else "" |
| 356 | if value_part and not symbol and not addend: |
| 357 | addend_part = "" |
| 358 | else: |
| 359 | signed = "+" if symbol is not None else "" |
| 360 | addend_part = f"&{symbol}" if symbol else "" |
| 361 | addend_part += f"{_signed(addend):{signed}#x}" |
| 362 | if value_part: |
| 363 | value_part += "+" |
| 364 | self.data.disassembly.append( |
| 365 | f"{len(self.data.body):x}: {value_part}{addend_part}" |
| 366 | ) |
| 367 | self.data.body.extend([0] * 8) |
| 368 | |
| 369 | def _emit_global_offset_table(self) -> None: |
| 370 | for hole in self.code.holes: |
no test coverage detected