簡體   English   中英

無法將HSDIS與OpenJDK 11一起使用

[英]Unable to use HSDIS with OpenJDK 11

因此,我正在嘗試使用openJDK-11構建/使用hsdis。 如果我嘗試使用binutils進行構建,則會出現以下錯誤:

hsdis.c:316:32: error: incompatible type for argument 1 of ‘disassembler'
app_data->dfn = disassembler(native_bfd);

hsdis.c:316:19: error: too few arguments to function ‘disassembler’
app_data->dfn = disassembler(native_bfd);

我嘗試使用binutils 2.29、2.30、2.31和2.32構建它。 他們都遇到了同樣的錯誤。

如果我從JDK-8中獲取一個預構建的二進制文件並將其放在我的JDK的build文件夾中,netbeans將拒絕確認它存在於該文件夾中。 我已經在netbeans中設置了OpenJDK並生成了slowdebug構建。 我嘗試逐步運行它以查看hsdis的確切搜索位置,令我驚訝的是它確實位於我放置文件的文件夾中,但是仍然沒有顯示該文件或目錄。 對我來說那個文件夾是

home/ubuntu/jdk11u-dev/build/linux-x86_64-normal-server-slowdebug/images/jdk/lib/server

我正在使用VMWare並運行Ubuntu 18.04。 有什么想法我能做什么?

我嘗試使用binutils 2.29、2.30、2.31和2.32構建它。 他們都遇到了同樣的錯誤。

您擁有的源版本不適用於binutils 2.29+。 jdk / jdk有一個補丁可以糾正此問題。 參見: https : hsdis.c這建議對hsdis.c進行以下修復:

diff --git a/src/share/tools/hsdis/hsdis.c b/src/share/tools/hsdis/hsdis.c
index 3d038f1..88122fb 100644
--- a/src/share/tools/hsdis/hsdis.c
+++ b/src/share/tools/hsdis/hsdis.c
@@ -30,6 +30,7 @@
 #include <config.h> /* required by bfd.h */
 #include <libiberty.h>
 #include <bfd.h>
+#include <bfdver.h>
 #include <dis-asm.h>
 #include <inttypes.h>
 #include <string.h>
@@ -312,7 +313,13 @@ static void setup_app_data(struct hsdis_app_data* app_data,

  /* Finish linking together the various callback blocks. */
  app_data->dinfo.application_data = (void*) app_data;
- app_data->dfn = disassembler(native_bfd);
+ app_data->dfn = disassembler(
+#if BFD_VERSION >= 229000000
+ bfd_get_arch(native_bfd),
+ bfd_big_endian(native_bfd),
+ bfd_get_mach(native_bfd),
+#endif
+ native_bfd);
  app_data->dinfo.print_address_func = hsdis_print_address_func;
  app_data->dinfo.read_memory_func = hsdis_read_memory_func; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM