Print this page
patch fix-lint
3317 dis(1) should support cross-target disassembly

Split Close
Expand all
Collapse all
          --- old/usr/src/lib/libdisasm/Makefile.com
          +++ new/usr/src/lib/libdisasm/Makefile.com
↓ open down ↓ 13 lines elided ↑ open up ↑
  14   14  # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15  # If applicable, add the following below this CDDL HEADER, with the
  16   16  # fields enclosed by brackets "[]" replaced with your own identifying
  17   17  # information: Portions Copyright [yyyy] [name of copyright owner]
  18   18  #
  19   19  # CDDL HEADER END
  20   20  #
  21   21  #
  22   22  # Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
  23   23  # Use is subject to license terms.
       24 +# Copyright 2012 Joshua M. Clulow <josh@sysmgr.org>
       25 +# Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
  24   26  #
  25   27  
  26   28  #
  27   29  # The build process for libdisasm is sightly different from that used by other
  28   30  # libraries, because libdisasm must be built in two flavors - as a standalone
  29   31  # for use by kmdb and as a normal library.  We use $(CURTYPE) to indicate the
  30   32  # current flavor being built.
  31   33  #
  32      -# The SPARC library is built from the closed gate.  This Makefile is shared
  33      -# between both environments, so all paths must be absolute.
  34      -#
  35   34  
  36   35  LIBRARY=        libdisasm.a
  37   36  STANDLIBRARY=   libstanddisasm.so
  38   37  VERS=           .1
  39   38  
  40   39  # By default, we build the shared library.  Construction of the standalone
  41   40  # is specifically requested by architecture-specific Makefiles.
  42   41  TYPES=          library
  43   42  CURTYPE=        library
  44   43  
  45   44  COMDIR=         $(SRC)/lib/libdisasm/common
  46   45  
  47   46  #
  48      -# Architecture-dependent files common to both versions of libdisasm
       47 +# Architecture-independent files
  49   48  #
  50      -OBJECTS_common_i386 = dis_i386.o dis_tables.o
  51      -OBJECTS_common_sparc = dis_sparc.o instr.o dis_sparc_fmt.o
  52      -
  53      -SRCS_common_i386 = $(ISASRCDIR)/dis_i386.c $(SRC)/common/dis/i386/dis_tables.c
  54      -SRCS_common_sparc = $(ISASRCDIR)/dis_sparc.c $(ISASRCDIR)/instr.c \
  55      -        $(ISASRCDIR)/dis_sparc_fmt.c
       49 +SRCS_common=            $(COMDIR)/libdisasm.c
       50 +OBJECTS_common=         libdisasm.o
  56   51  
  57   52  #
  58      -# Architecture-independent files common to both version of libdisasm
       53 +# Architecture-dependent disassembly files
  59   54  #
  60      -OBJECTS_common_common = libdisasm.o
  61      -SRC_common_common = $(OBJECTS_common_common:%.o=$(COMDIR)/%.c)
       55 +SRCS_i386=              $(COMDIR)/dis_i386.c \
       56 +                        $(SRC)/common/dis/i386/dis_tables.c
       57 +SRCS_sparc=             $(COMDIR)/dis_sparc.c \
       58 +                        $(COMDIR)/dis_sparc_fmt.c \
       59 +                        $(COMDIR)/dis_sparc_instr.c
  62   60  
       61 +OBJECTS_i386=           dis_i386.o \
       62 +                        dis_tables.o
       63 +OBJECTS_sparc=          dis_sparc.o \
       64 +                        dis_sparc_fmt.o \
       65 +                        dis_sparc_instr.o
  63   66  
  64      -OBJECTS=                                \
  65      -        $(OBJECTS_common_$(MACH))       \
  66      -        $(OBJECTS_common_common)
       67 +#
       68 +# We build the regular shared library with support for all architectures.
       69 +# The standalone version should only contain code for the native
       70 +# architecture to reduce the memory footprint of kmdb.
       71 +#
       72 +OBJECTS_library=        $(OBJECTS_common) \
       73 +                        $(OBJECTS_i386) \
       74 +                        $(OBJECTS_sparc)
       75 +OBJECTS_standalone=     $(OBJECTS_common) \
       76 +                        $(OBJECTS_$(MACH))
       77 +OBJECTS=                $(OBJECTS_$(CURTYPE))
  67   78  
  68   79  include $(SRC)/lib/Makefile.lib
  69   80  
  70      -SRCS=                                   \
  71      -        $(SRCS_$(CURTYPE))              \
  72      -        $(SRCS_common_$(MACH))          \
  73      -        $(SRCS_common_common)
       81 +SRCS_library=           $(SRCS_common) \
       82 +                        $(SRCS_i386) \
       83 +                        $(SRCS_sparc)
       84 +SRCS_standalone=        $(SRCS_common) \
       85 +                        $(SRCS_$(MACH))
       86 +SRCS=                   $(SRCS_$(CURTYPE))
  74   87  
  75   88  #
  76   89  # Used to verify that the standalone doesn't have any unexpected external
  77   90  # dependencies.
  78   91  #
  79   92  LINKTEST_OBJ = objs/linktest_stand.o
  80   93  
  81   94  CLOBBERFILES_standalone = $(LINKTEST_OBJ)
  82   95  CLOBBERFILES += $(CLOBBERFILES_$(CURTYPE))
  83   96  
↓ open down ↓ 17 lines elided ↑ open up ↑
 101  114  CERRWARN +=     -_gcc=-Wno-parentheses
 102  115  CERRWARN +=     -_gcc=-Wno-uninitialized
 103  116  
 104  117  # We want the thread-specific errno in the library, but we don't want it in
 105  118  # the standalone.  $(DTS_ERRNO) is designed to add -D_TS_ERRNO to $(CPPFLAGS),
 106  119  # in order to enable this feature.  Conveniently, -D_REENTRANT does the same
 107  120  # thing.  As such, we null out $(DTS_ERRNO) to ensure that the standalone
 108  121  # doesn't get it.
 109  122  DTS_ERRNO=
 110  123  
 111      -# We need to rename some standard functions so we can easily implement them 
 112      -# in consumers.
 113      -STAND_RENAMED_FUNCS= \
 114      -        snprintf
 115      -
 116      -CPPFLAGS_standalone = -DDIS_STANDALONE $(STAND_RENAMED_FUNCS:%=-D%=mdb_%) \
 117      -        -Dvsnprintf=mdb_iob_vsnprintf -I$(SRC)/cmd/mdb/common
      124 +CPPFLAGS_standalone = -DDIS_STANDALONE -I$(SRC)/cmd/mdb/common
 118  125  CPPFLAGS_library = -D_REENTRANT
 119  126  CPPFLAGS +=     -I$(COMDIR) $(CPPFLAGS_$(CURTYPE))
 120  127  
 121      -#
 122      -# For x86, we have to link to sources in usr/src/common
 123      -#
 124      -CPPFLAGS_dis_i386 = -I$(SRC)/common/dis/i386 -DDIS_TEXT
 125      -CPPFLAGS_dis_sparc =
 126      -CPPFLAGS +=     $(CPPFLAGS_dis_$(MACH))
      128 +# For the x86 disassembler we have to include sources from usr/src/common
      129 +CPPFLAGS += -I$(SRC)/common/dis/i386 -DDIS_TEXT
 127  130  
 128  131  CFLAGS_standalone = $(STAND_FLAGS_32)
 129  132  CFLAGS_common =
 130  133  CFLAGS += $(CFLAGS_$(CURTYPE)) $(CFLAGS_common)
 131  134  
 132  135  CFLAGS64_standalone = $(STAND_FLAGS_64)
 133  136  CFLAGS64 += $(CCVERBOSE) $(CFLAGS64_$(CURTYPE)) $(CFLAGS64_common)
 134  137  
 135  138  DYNFLAGS +=     $(ZINTERPOSE)
 136  139  
 137  140  .KEEP_STATE:
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX