RFR: 8320533: Adjust capstone integration for v6 changes [v2]

Andrew Haley aph at openjdk.org
Thu Nov 23 09:22:07 UTC 2023


On Thu, 23 Nov 2023 09:09:37 GMT, Galder Zamarreño <duke at openjdk.org> wrote:

>> FYI @theRealAph
>> 
>> It includes a couple of commits to integrate with Capstone v6 while still working with Capstone v5 and before:
>> * `CAPSTONE_ARCH` for aarch64 is now `CS_ARCH_AARCH64` instead of `CS_ARCH_ARM64`. See [this document](https://github.com/Rot127/capstone/blob/v6-release-guide/docs/cs_v6_release_guide.md) to understand motivation for this Capstone change.
>> * The `-Daarch64` macro was getting in the way and was causing invalid C to be produced. Undefined it before including `capstone.h`. Thx @rwestrel for suggesting the fix!
>> * Enhanced autoconf to select the right aarch64 arch name depending on the capstone library in use.
>> 
>> Here's some output to demonstrate autoconf:
>> 
>> 1. If using capstone v6, you will see:
>> 
>> checking capstone aarch64 arch name... AARCH64
>> 
>> 
>> 2. If using capstone v5, or earlier, you will see:
>> 
>> checking capstone aarch64 arch name... ARM64
>> 
>> 
>> With v5 or earlier, the compilation error in the config log file is the expected one:
>> 
>> 
>> configure:142906: checking capstone aarch64 arch name
>> configure:142919: /usr/bin/clang -c  -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/System/Library/Frameworks  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk/System/Library/Frameworks conftest.c >&5
>> conftest.c:27:16: error: use of undeclared identifier 'CS_ARCH_AARCH64'; did you mean 'CS_ARCH_ARM64'?
>> cs_arch test = CS_ARCH_AARCH64
>>                ^~~~~~~~~~~~~~~
>>                CS_ARCH_ARM64
>> /Users/galder/opt/capstone-5/include/capstone/capstone.h:76:2: note: 'CS_ARCH_ARM64' declared here
>>         CS_ARCH_ARM64,          ///< ARM-64, also called AArch64
>>         ^
>> 1 error generated.
>> configure:142919: $? = 1
>> configure: failed program was:
>> | /* confdefs.h */
>> | #define PACKAGE_NAME "OpenJDK"
>> | #define PACKAGE_TARNAME "openjdk"
>> | #define PACKAGE_VERSION "openjdk"
>> | #define PACKAGE_STRING "OpenJDK openjdk"
>> | #define PACKAGE_BUGREPORT "build-dev at openjdk.org"
>> | #define PACKAGE_URL "https://openjdk.org"
>> | #define HAVE_STDIO_H 1
>> | #define HAVE_STDLIB_H 1
>> | #define HAVE_STRING_H 1
>> | #define HAVE_INTTYPES_H 1
>> | #define HAVE_STDINT_H 1...
>
> Galder Zamarreño has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains two new commits since the last revision:
> 
>  - 8320533: Use autoconf to select the right capstone arch name
>  - 8320533: Update capstone aarch64 integration
>    
>    * `CAPSTONE_ARCH` for aarch64 is now `CS_ARCH_AARCH64` instead
>    of `CS_ARCH_ARM64`.
>    * The `-Daarch64` macro was getting in the way
>    and was causing invalid C to be produced.
>    Undefined it before including `capstone.h`.

src/utils/hsdis/capstone/hsdis-capstone.c line 54:

> 52: #include <inttypes.h>
> 53: #include <string.h>
> 54: 

Need a comment about this `undef`

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/16788#discussion_r1403107442


More information about the build-dev mailing list