We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent f1eaafb commit 82cbe05Copy full SHA for 82cbe05
3 files changed
pwnlib/asm.py
@@ -1029,12 +1029,12 @@ def get_cs_disassembler(eabi=None):
1029
'thumb' : (cs.CS_ARCH_ARM, cs.CS_MODE_THUMB + E),
1030
'arm' : (cs.CS_ARCH_ARM, cs.CS_MODE_ARM + E),
1031
'aarch64': (cs.CS_ARCH_AARCH64, cs.CS_MODE_ARM + E),
1032
- 'armhf' : (cs.CS_ARCH_ARM, cs.CS_MODE_ARM + cs.CS_MODE_THUMB + E),
+ 'armhf' : (cs.CS_ARCH_ARM, cs.CS_MODE_THUMB + E),
1033
'mips' : (cs.CS_ARCH_MIPS, cs.CS_MODE_32 + E),
1034
'mips64' : (cs.CS_ARCH_MIPS, cs.CS_MODE_64 + E),
1035
- 'sparc': (cs.CS_ARCH_SPARC, cs.CS_MODE_32 + E),
+ 'sparc' : (cs.CS_ARCH_SPARC, cs.CS_MODE_32 + E),
1036
'sparc64': (cs.CS_ARCH_SPARC, cs.CS_MODE_64 + E),
1037
- 'ppc': (cs.CS_ARCH_PPC, B + E),
+ 'ppc' : (cs.CS_ARCH_PPC, B + E),
1038
'powerpc': (cs.CS_ARCH_PPC, E + cs.CS_MODE_32),
1039
'powerpc64': (cs.CS_ARCH_PPC, E + cs.CS_MODE_64),
1040
'em_s390': (cs.CS_ARCH_SYSTEMZ, cs.CS_MODE_BIG_ENDIAN + cs.CS_MODE_64),
pwnlib/context/__init__.py
@@ -412,6 +412,7 @@ class ContextType(object):
412
'avr': little_8,
413
'amd64': little_64,
414
'arm': little_32,
415
+ 'armhf': little_32,
416
'cris': little_32,
417
'i386': little_32,
418
'ia64': big_64,
pwnlib/elf/elf.py
@@ -1172,19 +1172,20 @@ def libc_start_main_return(self):
1172
1173
func = self.functions['__libc_start_main']
1174
exit_addr = self.symbols['exit']
1175
- eabi = None
1176
# `__libc_start_call_main` is usually smaller than `__libc_start_main`,
1177
# (except for powerpc which uses a bigger `generic_start_main`), so
1178
# we might disassemble a bit too much, but it's a good dynamic estimate.
1179
callee_size = func.size
1180
# most arch's call instruction has the first operands as an intermidiate, except s390
1181
imm_index = 0
+ eabi = None
1182
1183
# If there's no delay slot, execution continues on the next instruction after a call.
1184
call_return_offset = 1
1185
call_instructions = set([cs.CS_GRP_CALL])
1186
if self.arch in ['arm', 'thumb']:
1187
if b'armhf' in self.linker:
1188
+ # FIXME: I have no idea why setting self.arch = 'armhf' does not work
1189
eabi = 'hf'
1190
if exit_addr & 1: exit_addr -= 1
1191
elif self.arch == 'aarch64':
0 commit comments