- Plugins now will be provided in RPX format and have the extension ".wps"

- Remove the fs function wrapper
This commit is contained in:
Maschell 2020-04-29 17:53:53 +02:00
parent cc2aea8ca9
commit 195e686a50
28 changed files with 723 additions and 834 deletions

7
.gitignore vendored
View File

@ -20,3 +20,10 @@ release/*
*.layout
wups.cbp
tools/udp_debug_reader/GeckoLog.txt
*.bz2
debug/
*.elf
*.wps
*.save-failed
*.jekyll-metadata
*.cbp

185
Makefile
View File

@ -1,70 +1,44 @@
DO_LOGGING := 0
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC)
endif
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>DEVKITPRO)
endif
export PATH := $(DEVKITPPC)/bin:$(PORTLIBS)/bin:$(PATH)
export PORTLIBS := $(DEVKITPRO)/portlibs/ppc
PREFIX := powerpc-eabi-
export AS := $(PREFIX)as
export CC := $(PREFIX)gcc
export CXX := $(PREFIX)g++
export AR := $(PREFIX)ar
export OBJCOPY := $(PREFIX)objcopy
include $(DEVKITPPC)/base_rules
TOPDIR ?= $(CURDIR)
include $(TOPDIR)/share/wups_rules
export WUT_MAJOR := 0
export WUT_MINOR := 3
export WUT_PATCH := 0
VERSION := $(WUT_MAJOR).$(WUT_MINOR).$(WUT_PATCH)
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
# DATA is a list of directories containing binary files
# LIBDIR is where the built library will be placed
# all directories are relative to this makefile
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
BUILD ?= release
SOURCES := src \
src/config
INCLUDES := src \
wups_include
DATA :=
LIB := lib
TARGET := wups
#BUILD := build
SOURCES := libraries/libwups/
DATA := data
INCLUDES := include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
CFLAGS = -g -Os -Wall -D__wiiu__ -D_GNU_SOURCE $(MACHDEP) $(INCLUDE)
CXXFLAGS = $(CFLAGS)
CFLAGS := -g -Wall -Werror -save-temps \
-ffunction-sections -fdata-sections \
$(MACHDEP) \
$(BUILD_CFLAGS)
ifeq ($(DO_LOGGING), 1)
CFLAGS += -D__LOGGING__
CXXFLAGS += -D__LOGGING__
endif
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__
ASFLAGS := -mregnames
CXXFLAGS := $(CFLAGS) -std=gnu++17
export WIIUBIN := $(LIB)/libwups.a
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS :=
ASFLAGS := -g $(MACHDEP)
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS :=
LIBDIRS :=
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
@ -73,56 +47,87 @@ LIBDIRS :=
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export TOPDIR ?= $(CURDIR)/..
export DEPSDIR := $(CURDIR)/$(BUILD)
export INCLUDEDIR := $(PORTLIBS)/include/
export TOPDIR := $(CURDIR)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
DEFFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.def)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) $(sFILES:.s=.o)
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
export OFILES_SRC := $(DEFFILES:.def=.o) $(SFILES:.s=.o) $(CFILES:.c=.o) $(CPPFILES:.cpp=.o)
export OFILES := $(OFILES_BIN) $(OFILES_SRC)
export HFILES := $(addsuffix .h,$(subst .,_,$(BINFILES)))
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD) -I$(PORTLIBS)/include
-I.
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) clean
.PHONY: all dist-bin dist-src dist install clean
#---------------------------------------------------------------------------------
$(BUILD):
all: lib/libwups.a lib/libwupsd.a
dist-bin: all
@tar --exclude=*~ -cjf wups-$(VERSION).tar.bz2 include lib share
dist-src:
@tar --exclude=*~ -cjf wups-src-$(VERSION).tar.bz2 include libraries share Makefile
dist: dist-src dist-bin
install: dist-bin
mkdir -p $(DESTDIR)$(DEVKITPRO)/wups
bzip2 -cd wups-$(VERSION).tar.bz2 | tar -xf - -C $(DESTDIR)$(DEVKITPRO)/wups
lib:
@[ -d $@ ] || mkdir -p $@
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
release:
@[ -d $@ ] || mkdir -p $@
debug:
@[ -d $@ ] || mkdir -p $@
lib/libwups.a : lib release $(SOURCES) $(INCLUDES)
@$(MAKE) BUILD=release OUTPUT=$(CURDIR)/$@ \
BUILD_CFLAGS="-DNDEBUG=1 -O2" \
DEPSDIR=$(CURDIR)/release \
--no-print-directory -C release \
-f $(CURDIR)/Makefile
lib/libwupsd.a : lib debug $(SOURCES) $(INCLUDES)
@$(MAKE) BUILD=debug OUTPUT=$(CURDIR)/$@ \
BUILD_CFLAGS="-DDEBUG=1 -Og" \
DEPSDIR=$(CURDIR)/debug \
--no-print-directory -C debug \
-f $(CURDIR)/Makefile
# Cancel .a rule from devkitPPC/base_rules
%.a:
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr debug release $(LIB) include
all: $(WIIUBIN)
WUPSDIR := $(DEVKITPRO)/wups
# Rule to install wups.
PHONY += install
install : wups.ld
$(addprefix $Qrm -rf ,$(wildcard $(WUPSDIR)))
$Qmkdir $(WUPSDIR)
$Qmkdir $(WUPSDIR)/lib/
$Qcp -r wups_include $(WUPSDIR)/include
$Qcp -r wups.ld $(WUPSDIR)
$Qcp -r plugin_makefile.mk $(WUPSDIR)
@cp $(BUILD)/lib/libwups.a $(WUPSDIR)/lib/
@rm -rf release debug lib
#---------------------------------------------------------------------------------
else
@ -132,17 +137,19 @@ DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(WIIUBIN) : $(OFILES) $(LIB)
@rm -f "$(WIIUBIN)"
@$(AR) rcs "$(WIIUBIN)" $(OFILES)
@echo built ... $(notdir $@)
$(LIB):
mkdir $(LIB)
$(OUTPUT) : $(OFILES)
$(OFILES_SRC) : $(HFILES)
#---------------------------------------------------------------------------------
%_bin.h %.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
#---------------------------------------------------------------------------------------

View File

@ -45,31 +45,6 @@ typedef struct wups_loader_init_overlay_args_t {
DrawTextureFunction drawtexturefunction_ptr;
} wups_loader_init_overlay_args_t;
typedef int (*OpenFunction) (const char *pathname, int flags);
typedef ssize_t (*WriteFunction) (int fd, const void *buf, size_t count);
typedef int (*CloseFunction) (int fd);
typedef ssize_t (*ReadFunction) (int fd, void *buf, size_t count);
typedef off_t (*LSeekFunction) (int fd, off_t offset, int whence);
typedef int (*StatFunction) (const char *pathname, struct stat *statbuf);
typedef int (*FStatFunction) (int fd, struct stat *statbuf);
typedef DIR* (*OpenDirFunction) (const char * arg);
typedef int (*CloseDirFunction) (DIR *dirp);
typedef struct dirent * (*ReadDirFunction) (DIR *dirp);
typedef int (*MKDirFunction) (const char *path, mode_t mode);
typedef struct wups_loader_init_fs_args_t {
OpenFunction open_repl;
CloseFunction close_repl;
WriteFunction write_repl;
ReadFunction read_repl;
LSeekFunction lseek_repl;
StatFunction stat_repl;
FStatFunction fstat_repl;
OpenDirFunction opendir_repl;
CloseDirFunction closedir_repl;
ReadDirFunction readdir_repl;
MKDirFunction mkdir_repl;
} wups_loader_init_fs_args_t;
typedef uint32_t (*KernelReadFunction)(const void *addr);
typedef void (*KernelWriteFunction)(void *addr, uint32_t value);
@ -98,7 +73,7 @@ typedef struct wups_loader_init_vid_mem_args_t_ {
The whole point of replacing the fs functions is to inherit SD/USB access.
The argument of the ON_APPLICATION_START hook provides information on the state of SD or USB access.
**/
void WUPS_InitFS(wups_loader_init_fs_args_t args);
//void WUPS_InitFS(wups_loader_init_fs_args_t args);
/**
Sets the function pointer for opening the overlay.

View File

@ -0,0 +1,6 @@
extern "C" void OSFatal(const char *msg);
extern "C" void __wups_start(){
OSFatal("This file needs to be run with the Wii U Plugin System.");
}

View File

@ -1,3 +1,5 @@
#define _GNU_SOURCE
#include <stdarg.h>
#include <stdlib.h>
#include <stdio.h>
@ -15,6 +17,7 @@
extern "C" {
#endif
void OSScreenInit(void);
void OSScreenShutdown(void);
uint32_t OSScreenGetBufferSizeEx(uint32_t bufferNum);

View File

@ -1,272 +1,134 @@
# You probably never need to adjust this Makefile.
# All changes can be done in the makefile.mk
#---------------------------------------------------------------------------------
# Clear the implicit built in rules
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPPC")
endif
#-------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitPRO")
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitpro")
endif
export PATH := $(DEVKITPPC)/bin:$(PORTLIBS)/bin:$(PATH)
export PORTLIBS := $(DEVKITPRO)/portlibs/ppc
export WUPSDIR := $(DEVKITPRO)/wups
export GCC_VER := $(shell $(DEVKITPPC)/bin/powerpc-eabi-gcc -dumpversion)
TOPDIR ?= $(CURDIR)
PREFIX := powerpc-eabi-
include $(DEVKITPRO)/wups/share/wups_rules
export AS := $(PREFIX)as
export CC := $(PREFIX)gcc
export CXX := $(PREFIX)g++
export LD := $(PREFIX)ld
export AR := $(PREFIX)ar
export OBJCOPY := $(PREFIX)objcopy
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# INCLUDES is a list of directories containing extra header files
#---------------------------------------------------------------------------------
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#-------------------------------------------------------------------------------
TARGET := $(notdir $(CURDIR))
BUILD := build
BUILD := build
SOURCES := src src/utils
DATA := data
INCLUDES := src
ifeq ($(notdir $(CURDIR)),$(BUILD))
include ../makefile.mk
else
include makefile.mk
endif
include $(WUPSDIR)/plugin_makefile.mk
#MAP ?= $(TARGET:.mod=.map)
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
CFLAGS := -g -Wall -O2 -ffunction-sections \
$(MACHDEP)
MACHDEP = -DESPRESSO -mcpu=750 -meabi -mhard-float
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__
# -Os: optimise size
# -Wall: generate lots of warnings
# -D__wiiu__: define the symbol __wiiu__ (used in some headers)
# -mcpu=750: enable processor specific compilation
# -meabi: enable eabi specific compilation
# -mhard-float: enable hardware floating point instructions
# -nostartfiles: Do not use the standard system startup files when linking
# -ffunction-sections: split up functions so linker can garbage collect
# -fdata-sections: split up data so linker can garbage collect
COMMON_CFLAGS := -O0 -Wall $(MACHDEP) -meabi -ffunction-sections -fdata-sections -Wl,-q $(COMMON_CFLAGS)
CXXFLAGS := $(CFLAGS)
CFLAGS += -D__WIIU__ -D__WUT__
ASFLAGS := -g $(ARCH)
LDFLAGS = -g $(ARCH) $(WUPSSPECS) -Wl,-Map,$(notdir $*.map)
# -x c: compile as c code
# -std=c11: use the c11 standard
CFLAGS := $(COMMON_CFLAGS) -x c -std=gnu11 $(CFLAGS)
LIBS := -lwups -lwut
# -x c++: compile as c++ code
# -std=gnu++11: use the c++11 standard
CXXFLAGS := $(COMMON_CFLAGS) -x c++ -std=gnu++11 $(CXXFLAGS)
#-------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level
# containing include and lib
#-------------------------------------------------------------------------------
LIBDIRS := $(PORTLIBS) $(WUPS_ROOT) $(WUT_ROOT)
#---------------------------------------------------------------------------------
# any extra ld flags
#--------------------------------------------------------------------------------
# --gc-sections: remove unneeded symbols
# -Map: generate a map file
LDFLAGS += $(ARCH) -Wl,-Map,$(notdir $@).map,--gc-sections,-wrap,__gxx_personality_v0
#---------------------------------------------------------------------------------
Q := @
MAKEFLAGS += --no-print-directory
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS +=
#
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS +=
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export PROJECTDIR := $(CURDIR)
export OUTPUT := $(CURDIR)/$(TARGETDIR)/$(TARGET)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
#---------------------------------------------------------------------------------
# automatically build a list of object files for our project
#---------------------------------------------------------------------------------
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
TTFFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.ttf)))
PNGFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
export REAL_LD := $(CC)
else
export REAL_LD := $(CXX)
endif
export OFILES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
$(sFILES:.s=.o) $(SFILES:.S=.o) \
$(PNGFILES:.png=.png.o) $(addsuffix .o,$(BINFILES))
#---------------------------------------------------------------------------------
# build a list of include paths
#---------------------------------------------------------------------------------
export INCLUDE_FULL += $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
$(EXTERNAL_INCLUDE)
#---------------------------------------------------------------------------------
# build a list of library paths
#---------------------------------------------------------------------------------
export LIBPATHS_FULL += $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
$(EXTERNAL_LIBPATHS)
#-------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/$(TARGET)
.PHONY: $(BUILD) clean install
export TOPDIR := $(CURDIR)
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#-------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#-------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#-------------------------------------------------------------------------------
export LD := $(CC)
#-------------------------------------------------------------------------------
else
#-------------------------------------------------------------------------------
export LD := $(CXX)
#-------------------------------------------------------------------------------
endif
#-------------------------------------------------------------------------------
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export OFILES := $(OFILES_BIN) $(OFILES_SRC)
export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES)))
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
.PHONY: $(BUILD) clean all
#-------------------------------------------------------------------------------
all: $(BUILD)
#---------------------------------------------------------------------------------
$(BUILD):
@[ -d $@ ] || mkdir -p $@
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) $(OUTPUT).mod $(OUTPUT)
@rm -fr $(BUILD) $(TARGET).wps $(TARGET).elf
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
else
.PHONY: all
DEPENDS := $(OFILES:.o=.d)
THIS_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
#-------------------------------------------------------------------------------
# main targets
#-------------------------------------------------------------------------------
all : $(OUTPUT).wps
###############################################################################
# Rule to make everything.
PHONY += all
$(OUTPUT).wps : $(OUTPUT).elf
$(OUTPUT).elf : $(OFILES)
all : $(OUTPUT)
###############################################################################
# Special build rules
$(OFILES_SRC) : $(HFILES_BIN)
# Rule to make the module file.
$(OUTPUT) : $(OFILES)
@echo "linking ... " $@
@$(REAL_LD) $(OFILES) $(LDFLAGS) $(LIBS) $(LIBPATHS_FULL) -o $@
###############################################################################
# Standard build rules
#---------------------------------------------------------------------------------
%.a:
#---------------------------------------------------------------------------------
@echo $(notdir $@)
@rm -f $@
@$(AR) -rc $@ $^
#---------------------------------------------------------------------------------
%.o: %.cpp
#-------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#-------------------------------------------------------------------------------
%.bin.o %_bin.h : %.bin
#-------------------------------------------------------------------------------
@echo $(notdir $<)
@$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER)
@$(bin2o)
#---------------------------------------------------------------------------------
%.o: %.c
@echo $(notdir $<)
@$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER)
#---------------------------------------------------------------------------------
%.o: %.S
@echo $(notdir $<)
@$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(INCLUDE_FULL) -c $< -o $@ $(ERROR_FILTER)
#---------------------------------------------------------------------------------
%.png.o : %.png
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.jpg.o : %.jpg
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.ttf.o : %.ttf
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.bin.o : %.bin
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.wav.o : %.wav
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.mp3.o : %.mp3
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
#---------------------------------------------------------------------------------
%.ogg.o : %.ogg
@echo $(notdir $<)
@bin2s -a 32 $< | $(AS) -o $(@)
###############################################################################
# Assembly listing rules
# Rule to make assembly listing.
PHONY += list
list : $(LIST)
# Rule to make the listing file.
%.list : $(TARGET)
$(LOG)
-$Qmkdir -p $(dir $@)
$Q$(OBJDUMP) -d $< > $@
###############################################################################
# Clean rule
# Rule to clean files.
PHONY += clean
clean :
$Qrm -rf $(wildcard $(BUILD) $(BIN))
###############################################################################
# Phony targets
.PHONY : $(PHONY)
-include $(DEPENDS)
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
#-------------------------------------------------------------------------------

View File

@ -1,47 +0,0 @@
# Target filename
TARGET := $(notdir $(CURDIR)).mod
# Source directories
SOURCES := src src/utils
# Data directories
DATA :=
# Include directories
INCLUDES := src
#---------------------------------------------------------------------------------
# options for code generation and linking
#---------------------------------------------------------------------------------
# Extra C AND C++ compiler flags
COMMON_CFLAGS :=
# Extra C compiler flags
CFLAGS :=
# Extra C++ compiler flags
CXXFLAGS :=
# Extra linking flags for all linking steps
LDFLAGS :=
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(WUPSDIR) $(WUT_ROOT) $(PORTLIBS)
#---------------------------------------------------------------------------------
# any extra libraries we wish to link with the project
#---------------------------------------------------------------------------------
LIBS := -lwut -lwups
#---------------------------------------------------------------------------------
# Will be added to the final lib paths
# example:
# -L$C:/library1/lib
#---------------------------------------------------------------------------------
EXTERNAL_LIBPATHS :=
#---------------------------------------------------------------------------------
# Will be added to the final include paths
# -IC:/library1/include
#---------------------------------------------------------------------------------
EXTERNAL_INCLUDE :=

476
share/wups.ld Normal file
View File

@ -0,0 +1,476 @@
OUTPUT_FORMAT("elf32-powerpc")
OUTPUT_ARCH(powerpc:common)
MEMORY {
relmem (rw) : ORIGIN = 0x00000000, LENGTH = 32M
codemem (rwx) : ORIGIN = 0x02000000, LENGTH = 224M
datamem (rw) : ORIGIN = 0x10000000, LENGTH = 800M
loadmem (rwx) : ORIGIN = 0xC0000000, LENGTH = 128M
}
ENTRY(__rpx_start)
SECTIONS
{
. = ORIGIN(codemem);
.syscall ALIGN(32) : {
*(.syscall .syscall.*)
} > codemem
.text ALIGN(32) : {
KEEP (*crt0.o(*.init))
KEEP (*(.init))
*(.text)
*(.text.*)
*(.gnu.warning)
*(.gnu.linkonce.t.*)
KEEP (*(.fini))
} > codemem
. = ORIGIN(datamem);
.rodata : {
*(.rodata)
*(.rodata.*)
*(.gnu.linkonce.r.*)
*(.preinit_array)
*(.init_array)
*(.fini_array)
KEEP (*crtbegin.o(.ctors))
KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors))
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors))
*(.jcr)
*(.dynamic)
*(.eh_frame_hdr)
KEEP (*(.eh_frame))
*(.fixup)
*(.gcc_except_table)
*(.gcc_except_table.*)
*(.got)
*(.got1)
*(.got2)
*(.got.plt)
*(.plt)
*(.tm_clone_table)
} > datamem
.data : {
*(.data)
*(.data.*)
*(.gnu.linkonce.d.*)
SORT(CONSTRUCTORS)
__sdata_start = .;
*(.sdata)
*(.sdata.*)
*(.gnu.linkonce.s.*)
__sdata_end = .;
__sdata2_start = .;
*(.sdata2)
*(.sdata2.*)
*(.gnu.linkonce.s2.*)
__sdata2_end = .;
} > datamem
__bss_start = .;
.bss (NOLOAD) : {
*(.dynbss)
*(.bss)
*(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
__sbss_start = .;
*(.dynsbss)
*(.sbss)
*(.sbss.*)
*(.gnu.linkonce.sb.*)
*(.scommon)
__sbss_end = .;
__sbss2_start = .;
*(.sbss2)
*(.sbss2.*)
*(.gnu.linkonce.sb2.*)
__sbss2_end = .;
} > datamem
__bss_end = .;
. = ORIGIN(relmem);
.rela.text ALIGN(4) : {
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t.*)
*(.rela.init)
*(.rela.fini)
} > relmem
.rela.data ALIGN(4) : {
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d.*)
*(.rela.sdata)
*(.rela.gnu.linkonce.s.*)
*(.rela.sdata2)
*(.rela.gnu.linkonce.s2.*)
*(.rela.init_array)
*(.rela.fini_array)
*(.rela.gcc_except_table .rela.gcc_except_table.*)
*(.rela.eh_frame)
*(.rela.got)
*(.rela.got1)
*(.rela.got2)
*(.rela.got.plt)
*(.rela.plt)
} > relmem
.rela.rodata ALIGN(4) : {
*(.rela.rodata)
*(.rela.rodata.*)
*(.rel.gnu.linkonce.r.*)
*(.rela.ctors)
*(.rela.dtors)
} > relmem
. = ORIGIN(loadmem);
.fexports ALIGN(32) : { KEEP( *(.fexports) ) } > loadmem
.dexports ALIGN(32) : { KEEP( *(.dexports) ) } > loadmem
.fimport_avm ALIGN(16) : {
KEEP ( *(.fimport_avm) )
*(.fimport_avm.*)
} > loadmem
.fimport_camera ALIGN(16) : {
KEEP ( *(.fimport_camera) )
*(.fimport_camera.*)
} > loadmem
.fimport_coreinit ALIGN(16) : {
KEEP ( *(.fimport_coreinit) )
*(.fimport_coreinit.*)
} > loadmem
.fimport_dc ALIGN(16) : {
KEEP ( *(.fimport_dc) )
*(.fimport_dc.*)
} > loadmem
.fimport_dmae ALIGN(16) : {
KEEP ( *(.fimport_dmae) )
*(.fimport_dmae.*)
} > loadmem
.fimport_drmapp ALIGN(16) : {
KEEP ( *(.fimport_drmapp) )
*(.fimport_drmapp.*)
} > loadmem
.fimport_erreula ALIGN(16) : {
KEEP ( *(.fimport_erreula) )
*(.fimport_erreula.*)
} > loadmem
.fimport_gx2 ALIGN(16) : {
KEEP ( *(.fimport_gx2) )
*(.fimport_gx2.*)
} > loadmem
.fimport_h264 ALIGN(16) : {
KEEP ( *(.fimport_h264) )
*(.fimport_h264.*)
} > loadmem
.fimport_lzma920 ALIGN(16) : {
KEEP ( *(.fimport_lzma920) )
*(.fimport_lzma920.*)
} > loadmem
.fimport_mic ALIGN(16) : {
KEEP ( *(.fimport_mic) )
*(.fimport_mic.*)
} > loadmem
.fimport_nfc ALIGN(16) : {
KEEP ( *(.fimport_nfc) )
*(.fimport_nfc.*)
} > loadmem
.fimport_nio_prof ALIGN(16) : {
KEEP ( *(.fimport_nio_prof) )
*(.fimport_nio_prof.*)
} > loadmem
.fimport_nlibcurl ALIGN(16) : {
KEEP ( *(.fimport_nlibcurl) )
*(.fimport_nlibcurl.*)
} > loadmem
.fimport_nlibnss2 ALIGN(16) : {
KEEP ( *(.fimport_nlibnss2) )
*(.fimport_nlibnss2.*)
} > loadmem
.fimport_nlibnss ALIGN(16) : {
KEEP ( *(.fimport_nlibnss) )
*(.fimport_nlibnss.*)
} > loadmem
.fimport_nn_ac ALIGN(16) : {
KEEP ( *(.fimport_nn_ac) )
*(.fimport_nn_ac.*)
} > loadmem
.fimport_nn_acp ALIGN(16) : {
KEEP ( *(.fimport_nn_acp) )
*(.fimport_nn_acp.*)
} > loadmem
.fimport_nn_act ALIGN(16) : {
KEEP ( *(.fimport_nn_act) )
*(.fimport_nn_act.*)
} > loadmem
.fimport_nn_aoc ALIGN(16) : {
KEEP ( *(.fimport_nn_aoc) )
*(.fimport_nn_aoc.*)
} > loadmem
.fimport_nn_boss ALIGN(16) : {
KEEP ( *(.fimport_nn_boss) )
*(.fimport_nn_boss.*)
} > loadmem
.fimport_nn_ccr ALIGN(16) : {
KEEP ( *(.fimport_nn_ccr) )
*(.fimport_nn_ccr.*)
} > loadmem
.fimport_nn_cmpt ALIGN(16) : {
KEEP ( *(.fimport_nn_cmpt) )
*(.fimport_nn_cmpt.*)
} > loadmem
.fimport_nn_dlp ALIGN(16) : {
KEEP ( *(.fimport_nn_dlp) )
*(.fimport_nn_dlp.*)
} > loadmem
.fimport_nn_ec ALIGN(16) : {
KEEP ( *(.fimport_nn_ec) )
*(.fimport_nn_ec.*)
} > loadmem
.fimport_nn_fp ALIGN(16) : {
KEEP ( *(.fimport_nn_fp) )
*(.fimport_nn_fp.*)
} > loadmem
.fimport_nn_hai ALIGN(16) : {
KEEP ( *(.fimport_nn_hai) )
*(.fimport_nn_hai.*)
} > loadmem
.fimport_nn_hpad ALIGN(16) : {
KEEP ( *(.fimport_nn_hpad) )
*(.fimport_nn_hpad.*)
} > loadmem
.fimport_nn_idbe ALIGN(16) : {
KEEP ( *(.fimport_nn_idbe) )
*(.fimport_nn_idbe.*)
} > loadmem
.fimport_nn_ndm ALIGN(16) : {
KEEP ( *(.fimport_nn_ndm) )
*(.fimport_nn_ndm.*)
} > loadmem
.fimport_nn_nets2 ALIGN(16) : {
KEEP ( *(.fimport_nn_nets2) )
*(.fimport_nn_nets2.*)
} > loadmem
.fimport_nn_nfp ALIGN(16) : {
KEEP ( *(.fimport_nn_nfp) )
*(.fimport_nn_nfp.*)
} > loadmem
.fimport_nn_nim ALIGN(16) : {
KEEP ( *(.fimport_nn_nim) )
*(.fimport_nn_nim.*)
} > loadmem
.fimport_nn_olv ALIGN(16) : {
KEEP ( *(.fimport_nn_olv) )
*(.fimport_nn_olv.*)
} > loadmem
.fimport_nn_pdm ALIGN(16) : {
KEEP ( *(.fimport_nn_pdm) )
*(.fimport_nn_pdm.*)
} > loadmem
.fimport_nn_save ALIGN(16) : {
KEEP ( *(.fimport_nn_save) )
*(.fimport_nn_save.*)
} > loadmem
.fimport_nn_sl ALIGN(16) : {
KEEP ( *(.fimport_nn_sl) )
*(.fimport_nn_sl.*)
} > loadmem
.fimport_nn_spm ALIGN(16) : {
KEEP ( *(.fimport_nn_spm) )
*(.fimport_nn_spm.*)
} > loadmem
.fimport_nn_temp ALIGN(16) : {
KEEP ( *(.fimport_nn_temp) )
*(.fimport_nn_temp.*)
} > loadmem
.fimport_nn_uds ALIGN(16) : {
KEEP ( *(.fimport_nn_uds) )
*(.fimport_nn_uds.*)
} > loadmem
.fimport_nn_vctl ALIGN(16) : {
KEEP ( *(.fimport_nn_vctl) )
*(.fimport_nn_vctl.*)
} > loadmem
.fimport_nsysccr ALIGN(16) : {
KEEP ( *(.fimport_nsysccr) )
*(.fimport_nsysccr.*)
} > loadmem
.fimport_nsyshid ALIGN(16) : {
KEEP ( *(.fimport_nsyshid) )
*(.fimport_nsyshid.*)
} > loadmem
.fimport_nsyskbd ALIGN(16) : {
KEEP ( *(.fimport_nsyskbd) )
*(.fimport_nsyskbd.*)
} > loadmem
.fimport_nsysnet ALIGN(16) : {
KEEP ( *(.fimport_nsysnet) )
*(.fimport_nsysnet.*)
} > loadmem
.fimport_nsysuhs ALIGN(16) : {
KEEP ( *(.fimport_nsysuhs) )
*(.fimport_nsysuhs.*)
} > loadmem
.fimport_nsysuvd ALIGN(16) : {
KEEP ( *(.fimport_nsysuvd) )
*(.fimport_nsysuvd.*)
} > loadmem
.fimport_ntag ALIGN(16) : {
KEEP ( *(.fimport_ntag) )
*(.fimport_ntag.*)
} > loadmem
.fimport_padscore ALIGN(16) : {
KEEP ( *(.fimport_padscore) )
*(.fimport_padscore.*)
} > loadmem
.fimport_proc_ui ALIGN(16) : {
KEEP ( *(.fimport_proc_ui) )
*(.fimport_proc_ui.*)
} > loadmem
.fimport_sndcore2 ALIGN(16) : {
KEEP ( *(.fimport_sndcore2) )
*(.fimport_sndcore2.*)
} > loadmem
.fimport_snd_core ALIGN(16) : {
KEEP ( *(.fimport_snd_core) )
*(.fimport_snd_core.*)
} > loadmem
.fimport_snduser2 ALIGN(16) : {
KEEP ( *(.fimport_snduser2) )
*(.fimport_snduser2.*)
} > loadmem
.fimport_snd_user ALIGN(16) : {
KEEP ( *(.fimport_snd_user) )
*(.fimport_snd_user.*)
} > loadmem
.fimport_swkbd ALIGN(16) : {
KEEP ( *(.fimport_swkbd) )
*(.fimport_swkbd.*)
} > loadmem
.fimport_sysapp ALIGN(16) : {
KEEP ( *(.fimport_sysapp) )
*(.fimport_sysapp.*)
} > loadmem
.fimport_tcl ALIGN(16) : {
KEEP ( *(.fimport_tcl) )
*(.fimport_tcl.*)
} > loadmem
.fimport_tve ALIGN(16) : {
KEEP ( *(.fimport_tve) )
*(.fimport_tve.*)
} > loadmem
.fimport_uac ALIGN(16) : {
KEEP ( *(.fimport_uac) )
*(.fimport_uac.*)
} > loadmem
.fimport_uac_rpl ALIGN(16) : {
KEEP ( *(.fimport_uac_rpl) )
*(.fimport_uac_rpl.*)
} > loadmem
.fimport_usb_mic ALIGN(16) : {
KEEP ( *(.fimport_usb_mic) )
*(.fimport_usb_mic.*)
} > loadmem
.fimport_uvc ALIGN(16) : {
KEEP ( *(.fimport_uvc) )
*(.fimport_uvc.*)
} > loadmem
.fimport_uvd ALIGN(16) : {
KEEP ( *(.fimport_uvd) )
*(.fimport_uvd.*)
} > loadmem
.fimport_vpadbase ALIGN(16) : {
KEEP ( *(.fimport_vpadbase) )
*(.fimport_vpadbase.*)
} > loadmem
.fimport_vpad ALIGN(16) : {
KEEP ( *(.fimport_vpad) )
*(.fimport_vpad.*)
} > loadmem
.fimport_zlib125 ALIGN(16) : {
KEEP ( *(.fimport_zlib125) )
*(.fimport_zlib125.*)
} > loadmem
.dimport_coreinit ALIGN(16) : {
KEEP ( *(.dimport_coreinit) )
*(.dimport_coreinit.*)
} > loadmem
.dimport_nn_act ALIGN(16) : {
KEEP ( *(.dimport_nn_act) )
*(.dimport_nn_act.*)
} > loadmem
.dimport_nn_boss ALIGN(16) : {
KEEP ( *(.dimport_nn_boss) )
*(.dimport_nn_boss.*)
} > loadmem
.dimport_nn_ec ALIGN(16) : {
KEEP ( *(.dimport_nn_ec) )
*(.dimport_nn_ec.*)
} > loadmem
.dimport_nn_nim ALIGN(16) : {
KEEP ( *(.dimport_nn_nim) )
*(.dimport_nn_nim.*)
} > loadmem
.dimport_nn_sl ALIGN(16) : {
KEEP ( *(.dimport_nn_sl) )
*(.dimport_nn_sl.*)
} > loadmem
.dimport_nn_uds ALIGN(16) : {
KEEP ( *(.dimport_nn_uds) )
*(.dimport_nn_uds.*)
} > loadmem
.symtab ALIGN(4) : { *(.symtab) } > loadmem
.strtab ALIGN(1) : { *(.strtab) } > loadmem
.shstrtab ALIGN(1) : { *(.shstrtab) } > loadmem
__SDATA_START__ = __sdata_start;
__SBSS_END__ = __sbss_end;
__SDATA2_START__ = __sdata2_start;
__SBSS2_END__ = __sbss2_end;
_SDA_BASE_ = __sbss_end;
_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2);
.wups.meta : {
*(.wups.meta*)
KEEP(*(.wups.meta*))
} > datamem
.wups.load : {
*(.wups.load*)
KEEP(*(.wups.load*))
} > datamem
.wups.hooks : {
*(.wups.hooks*)
KEEP(*(.wups.hooks*))
} > datamem
/DISCARD/ : {
*(.abs)
*(.comment)
*(.gnu.attributes)
*(.gnu.version)
*(.gnu.version_d)
*(.gnu.version_r)
}
}

4
share/wups.specs Normal file
View File

@ -0,0 +1,4 @@
%rename link old_link
*link:
%(old_link) -T %:getenv(DEVKITPRO /wups/share/wups.ld) --gc-sections --emit-relocs -z nocopyreloc -wrap __gxx_personality_v0 --entry=__wups_start

38
share/wups_rules Normal file
View File

@ -0,0 +1,38 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITPRO)),)
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>/devkitPro")
endif
ifeq ($(strip $(DEVKITPPC)),)
$(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>/devkitPro/devkitPPC")
endif
include $(DEVKITPPC)/base_rules
PORTLIBS := $(PORTLIBS_PATH)/wiiu $(PORTLIBS_PATH)/ppc
export PATH := $(PORTLIBS_PATH)/wiiu/bin:$(PORTLIBS_PATH)/ppc/bin:$(PATH)
WUPS_ROOT ?= $(DEVKITPRO)/wups
WUPSSPECS := -specs=$(WUPS_ROOT)/share/wups.specs
MACHDEP = -DESPRESSO -mcpu=750 -meabi -mhard-float
#---------------------------------------------------------------------------------
%.wps: %.elf
@cp $< $*.strip.elf
@$(STRIP) -g $*.strip.elf
@elf2rpl $*.strip.elf $@
@printf '\xDE\xAD' | dd of=$@ bs=1 seek=9 count=2 conv=notrunc status=none
@rm $*.strip.elf
@echo built ... $(notdir $@)
#---------------------------------------------------------------------------------
%.elf:
@echo linking ... $(notdir $@)
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
@$(NM) -CSn $@ > $(notdir $*.lst)

View File

@ -1,97 +0,0 @@
#include <stddef.h>
#include <stdint.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>
#include <wups.h>
static OpenFunction new_open_ptr __attribute__((section(".data"))) = NULL;
static CloseFunction new_close_ptr __attribute__((section(".data"))) = NULL;
static WriteFunction new_write_ptr __attribute__((section(".data"))) = NULL;
static ReadFunction new_read_ptr __attribute__((section(".data"))) = NULL;
static LSeekFunction new_lseek_ptr __attribute__((section(".data"))) = NULL;
static StatFunction new_stat_ptr __attribute__((section(".data"))) = NULL;
static FStatFunction new_fstat_ptr __attribute__((section(".data"))) = NULL;
static OpenDirFunction new_opendir_ptr __attribute__((section(".data"))) = NULL;
static CloseDirFunction new_closedir_ptr __attribute__((section(".data"))) = NULL;
static ReadDirFunction new_readdir_ptr __attribute__((section(".data"))) = NULL;
static MKDirFunction new_mkdir_ptr __attribute__((section(".data"))) = NULL;
#ifdef __cplusplus
extern "C" {
#endif
void WUPS_InitFS(wups_loader_init_fs_args_t args) {
new_open_ptr = args.open_repl;
new_close_ptr = args.close_repl;
new_write_ptr = args.write_repl;
new_read_ptr = args.read_repl;
new_lseek_ptr = args.lseek_repl;
new_stat_ptr = args.stat_repl;
new_fstat_ptr = args.fstat_repl;
new_opendir_ptr = args.opendir_repl;
new_closedir_ptr = args.closedir_repl;
new_readdir_ptr = args.readdir_repl;
new_mkdir_ptr = args.mkdir_repl;
}
int __real_open(const char *pathname, int flags);
int __wrap_open(const char *pathname, int flags) {
if(new_open_ptr == NULL) return __real_open(pathname,flags);
return new_open_ptr(pathname,flags);
}
int __real_close(int fd);
int __wrap_close(int fd) {
if(new_close_ptr == NULL) return __real_close(fd);
return new_close_ptr(fd);
}
ssize_t __real_write(int fd, const void *buf, size_t count);
ssize_t __wrap_write(int fd, const void *buf, size_t count) {
if(new_write_ptr == NULL) return __real_write(fd,buf,count);
return new_write_ptr(fd,buf,count);
}
ssize_t __real_read(int fd, void *buf, size_t count);
ssize_t __wrap_read(int fd, void *buf, size_t count) {
if(new_read_ptr == NULL) return __real_read(fd,buf,count);
return new_read_ptr(fd,buf,count);
}
off_t __real_lseek(int fd, off_t offset, int whence);
off_t __wrap_lseek(int fd, off_t offset, int whence) {
if(new_lseek_ptr == NULL) return __real_lseek(fd, offset, whence);
return new_lseek_ptr(fd, offset, whence);
}
int __real_stat(const char *pathname, struct stat *statbuf);
int __wrap_stat(const char *pathname, struct stat *statbuf) {
if(new_stat_ptr == NULL) return __real_stat(pathname,statbuf);
return new_stat_ptr(pathname,statbuf);
}
int __real_fstat(int fd, struct stat *statbuf);
int __wrap_fstat(int fd, struct stat *statbuf) {
if(new_fstat_ptr == NULL) return __real_fstat(fd,statbuf);
return new_fstat_ptr(fd,statbuf);
}
DIR* __real_opendir(const char * arg);
DIR* __wrap_opendir(const char * arg) {
if(new_opendir_ptr == NULL) return __real_opendir(arg);
return new_opendir_ptr(arg);
}
int __real_closedir(DIR *dirp);
int __wrap_closedir(DIR *dirp) {
if(new_closedir_ptr == NULL) return __real_closedir(dirp);
return new_closedir_ptr(dirp);
}
struct dirent * __real_readdir(DIR *dirp);
struct dirent * __wrap_readdir(DIR *dirp) {
if(new_readdir_ptr == NULL) return __real_readdir(dirp);
return new_readdir_ptr(dirp);
}
int __real_mkdir(const char *path, mode_t mode);
int __wrap_mkdir(const char *path, mode_t mode) {
if(new_mkdir_ptr == NULL) return __real_mkdir(path, mode);
return new_mkdir_ptr(path, mode);
}
#ifdef __cplusplus
}
#endif

345
wups.ld
View File

@ -1,345 +0,0 @@
OUTPUT_FORMAT("elf32-powerpc")
OUTPUT_ARCH(powerpc:common)
SECTIONS {
.text : {
*(.text*)
}
.sdata : {
*(.sdata*)
}
.data : {
*(.data*)
}
.rodata : {
*(.rodata*)
}
.sbss : {
*(.sbss*)
}
.bss : {
*(.bss*)
}
.got2 : {
*(.got2*)
}
.gcc_except_table : {
*(.gcc_except_table*)
}
.fimport_avm ALIGN(16) : {
KEEP ( *(.fimport_avm) )
*(.fimport_avm.*)
}
.fimport_camera ALIGN(16) : {
KEEP ( *(.fimport_camera) )
*(.fimport_camera.*)
}
.fimport_coreinit ALIGN(16) : {
KEEP ( *(.fimport_coreinit) )
*(.fimport_coreinit.*)
}
.fimport_dc ALIGN(16) : {
KEEP ( *(.fimport_dc) )
*(.fimport_dc.*)
}
.fimport_dmae ALIGN(16) : {
KEEP ( *(.fimport_dmae) )
*(.fimport_dmae.*)
}
.fimport_drmapp ALIGN(16) : {
KEEP ( *(.fimport_drmapp) )
*(.fimport_drmapp.*)
}
.fimport_erreula ALIGN(16) : {
KEEP ( *(.fimport_erreula) )
*(.fimport_erreula.*)
}
.fimport_gx2 ALIGN(16) : {
KEEP ( *(.fimport_gx2) )
*(.fimport_gx2.*)
}
.fimport_h264 ALIGN(16) : {
KEEP ( *(.fimport_h264) )
*(.fimport_h264.*)
}
.fimport_lzma920 ALIGN(16) : {
KEEP ( *(.fimport_lzma920) )
*(.fimport_lzma920.*)
}
.fimport_mic ALIGN(16) : {
KEEP ( *(.fimport_mic) )
*(.fimport_mic.*)
}
.fimport_nfc ALIGN(16) : {
KEEP ( *(.fimport_nfc) )
*(.fimport_nfc.*)
}
.fimport_nio_prof ALIGN(16) : {
KEEP ( *(.fimport_nio_prof) )
*(.fimport_nio_prof.*)
}
.fimport_nlibcurl ALIGN(16) : {
KEEP ( *(.fimport_nlibcurl) )
*(.fimport_nlibcurl.*)
}
.fimport_nlibnss2 ALIGN(16) : {
KEEP ( *(.fimport_nlibnss2) )
*(.fimport_nlibnss2.*)
}
.fimport_nlibnss ALIGN(16) : {
KEEP ( *(.fimport_nlibnss) )
*(.fimport_nlibnss.*)
}
.fimport_nn_ac ALIGN(16) : {
KEEP ( *(.fimport_nn_ac) )
*(.fimport_nn_ac.*)
}
.fimport_nn_acp ALIGN(16) : {
KEEP ( *(.fimport_nn_acp) )
*(.fimport_nn_acp.*)
}
.fimport_nn_act ALIGN(16) : {
KEEP ( *(.fimport_nn_act) )
*(.fimport_nn_act.*)
}
.fimport_nn_aoc ALIGN(16) : {
KEEP ( *(.fimport_nn_aoc) )
*(.fimport_nn_aoc.*)
}
.fimport_nn_boss ALIGN(16) : {
KEEP ( *(.fimport_nn_boss) )
*(.fimport_nn_boss.*)
}
.fimport_nn_ccr ALIGN(16) : {
KEEP ( *(.fimport_nn_ccr) )
*(.fimport_nn_ccr.*)
}
.fimport_nn_cmpt ALIGN(16) : {
KEEP ( *(.fimport_nn_cmpt) )
*(.fimport_nn_cmpt.*)
}
.fimport_nn_dlp ALIGN(16) : {
KEEP ( *(.fimport_nn_dlp) )
*(.fimport_nn_dlp.*)
}
.fimport_nn_ec ALIGN(16) : {
KEEP ( *(.fimport_nn_ec) )
*(.fimport_nn_ec.*)
}
.fimport_nn_fp ALIGN(16) : {
KEEP ( *(.fimport_nn_fp) )
*(.fimport_nn_fp.*)
}
.fimport_nn_hai ALIGN(16) : {
KEEP ( *(.fimport_nn_hai) )
*(.fimport_nn_hai.*)
}
.fimport_nn_hpad ALIGN(16) : {
KEEP ( *(.fimport_nn_hpad) )
*(.fimport_nn_hpad.*)
}
.fimport_nn_idbe ALIGN(16) : {
KEEP ( *(.fimport_nn_idbe) )
*(.fimport_nn_idbe.*)
}
.fimport_nn_ndm ALIGN(16) : {
KEEP ( *(.fimport_nn_ndm) )
*(.fimport_nn_ndm.*)
}
.fimport_nn_nets2 ALIGN(16) : {
KEEP ( *(.fimport_nn_nets2) )
*(.fimport_nn_nets2.*)
}
.fimport_nn_nfp ALIGN(16) : {
KEEP ( *(.fimport_nn_nfp) )
*(.fimport_nn_nfp.*)
}
.fimport_nn_nim ALIGN(16) : {
KEEP ( *(.fimport_nn_nim) )
*(.fimport_nn_nim.*)
}
.fimport_nn_olv ALIGN(16) : {
KEEP ( *(.fimport_nn_olv) )
*(.fimport_nn_olv.*)
}
.fimport_nn_pdm ALIGN(16) : {
KEEP ( *(.fimport_nn_pdm) )
*(.fimport_nn_pdm.*)
}
.fimport_nn_save ALIGN(16) : {
KEEP ( *(.fimport_nn_save) )
*(.fimport_nn_save.*)
}
.fimport_nn_sl ALIGN(16) : {
KEEP ( *(.fimport_nn_sl) )
*(.fimport_nn_sl.*)
}
.fimport_nn_spm ALIGN(16) : {
KEEP ( *(.fimport_nn_spm) )
*(.fimport_nn_spm.*)
}
.fimport_nn_temp ALIGN(16) : {
KEEP ( *(.fimport_nn_temp) )
*(.fimport_nn_temp.*)
}
.fimport_nn_uds ALIGN(16) : {
KEEP ( *(.fimport_nn_uds) )
*(.fimport_nn_uds.*)
}
.fimport_nn_vctl ALIGN(16) : {
KEEP ( *(.fimport_nn_vctl) )
*(.fimport_nn_vctl.*)
}
.fimport_nsysccr ALIGN(16) : {
KEEP ( *(.fimport_nsysccr) )
*(.fimport_nsysccr.*)
}
.fimport_nsyshid ALIGN(16) : {
KEEP ( *(.fimport_nsyshid) )
*(.fimport_nsyshid.*)
}
.fimport_nsyskbd ALIGN(16) : {
KEEP ( *(.fimport_nsyskbd) )
*(.fimport_nsyskbd.*)
}
.fimport_nsysnet ALIGN(16) : {
KEEP ( *(.fimport_nsysnet) )
*(.fimport_nsysnet.*)
}
.fimport_nsysuhs ALIGN(16) : {
KEEP ( *(.fimport_nsysuhs) )
*(.fimport_nsysuhs.*)
}
.fimport_nsysuvd ALIGN(16) : {
KEEP ( *(.fimport_nsysuvd) )
*(.fimport_nsysuvd.*)
}
.fimport_ntag ALIGN(16) : {
KEEP ( *(.fimport_ntag) )
*(.fimport_ntag.*)
}
.fimport_padscore ALIGN(16) : {
KEEP ( *(.fimport_padscore) )
*(.fimport_padscore.*)
}
.fimport_proc_ui ALIGN(16) : {
KEEP ( *(.fimport_proc_ui) )
*(.fimport_proc_ui.*)
}
.fimport_sndcore2 ALIGN(16) : {
KEEP ( *(.fimport_sndcore2) )
*(.fimport_sndcore2.*)
}
.fimport_snd_core ALIGN(16) : {
KEEP ( *(.fimport_snd_core) )
*(.fimport_snd_core.*)
}
.fimport_snduser2 ALIGN(16) : {
KEEP ( *(.fimport_snduser2) )
*(.fimport_snduser2.*)
}
.fimport_snd_user ALIGN(16) : {
KEEP ( *(.fimport_snd_user) )
*(.fimport_snd_user.*)
}
.fimport_swkbd ALIGN(16) : {
KEEP ( *(.fimport_swkbd) )
*(.fimport_swkbd.*)
}
.fimport_sysapp ALIGN(16) : {
KEEP ( *(.fimport_sysapp) )
*(.fimport_sysapp.*)
}
.fimport_tcl ALIGN(16) : {
KEEP ( *(.fimport_tcl) )
*(.fimport_tcl.*)
}
.fimport_tve ALIGN(16) : {
KEEP ( *(.fimport_tve) )
*(.fimport_tve.*)
}
.fimport_uac ALIGN(16) : {
KEEP ( *(.fimport_uac) )
*(.fimport_uac.*)
}
.fimport_uac_rpl ALIGN(16) : {
KEEP ( *(.fimport_uac_rpl) )
*(.fimport_uac_rpl.*)
}
.fimport_usb_mic ALIGN(16) : {
KEEP ( *(.fimport_usb_mic) )
*(.fimport_usb_mic.*)
}
.fimport_uvc ALIGN(16) : {
KEEP ( *(.fimport_uvc) )
*(.fimport_uvc.*)
}
.fimport_uvd ALIGN(16) : {
KEEP ( *(.fimport_uvd) )
*(.fimport_uvd.*)
}
.fimport_vpadbase ALIGN(16) : {
KEEP ( *(.fimport_vpadbase) )
*(.fimport_vpadbase.*)
}
.fimport_vpad ALIGN(16) : {
KEEP ( *(.fimport_vpad) )
*(.fimport_vpad.*)
}
.fimport_zlib125 ALIGN(16) : {
KEEP ( *(.fimport_zlib125) )
*(.fimport_zlib125.*)
}
.dimport_coreinit ALIGN(16) : {
KEEP ( *(.dimport_coreinit) )
*(.dimport_coreinit.*)
}
.dimport_nn_act ALIGN(16) : {
KEEP ( *(.dimport_nn_act) )
*(.dimport_nn_act.*)
}
.dimport_nn_boss ALIGN(16) : {
KEEP ( *(.dimport_nn_boss) )
*(.dimport_nn_boss.*)
}
.dimport_nn_ec ALIGN(16) : {
KEEP ( *(.dimport_nn_ec) )
*(.dimport_nn_ec.*)
}
.dimport_nn_nim ALIGN(16) : {
KEEP ( *(.dimport_nn_nim) )
*(.dimport_nn_nim.*)
}
.dimport_nn_sl ALIGN(16) : {
KEEP ( *(.dimport_nn_sl) )
*(.dimport_nn_sl.*)
}
.dimport_nn_uds ALIGN(16) : {
KEEP ( *(.dimport_nn_uds) )
*(.dimport_nn_uds.*)
}
.wups.meta : {
*(.wups.meta*)
KEEP(*(.wups.meta*))
}
.wups.load : {
*(.wups.load*)
KEEP(*(.wups.load*))
}
.wups.hooks : {
*(.wups.hooks*)
KEEP(*(.wups.hooks*))
}
/DISCARD/ : {
*(.abs)
*(.comment)
*(.gnu.attributes)
*(.gnu.version)
*(.gnu.version_d)
*(.gnu.version_r)
}
}