@tsamma
When you're working on stubs_entry_2.S and stubs_min.S, make sure you allow the sigfinder to re-generate stubs_entry.S during the build procedure. You need to copy PRIMARY.BIN to platform/ixus175_elph180/sub/100c for this to work.
If stubs_entry.S is not updated, you can easily get duplicated symbols, like viewport_fb_d in your case.
Note that the sigfinder can make mistakes, it's recommended to double-check at least the variables in stubs_entry.S (variables: the lines that begin with DEF).
Some other notes.
- makefile.inc: Comment out
override OPT_ARAM_MALLOC=1 and
override OPT_CHDK_IN_ARAM=, until you know how much free RAM you have.
- PLATFORMOSVER: don't include the patchlevel part, just the number (58)
- the dancingbits sequence (for NEED_ENCODED_DISKBOOT) seems to be located at offset 0x2978 in PRIMARY.BIN
- you need to add the new sequence to tools/dancingbits.h and reference it correctly for NEED_ENCODED_DISKBOOT in order to generate a diskboot.bin that the camera can load
- loader/ixus175_elph180/main.c: you need to locate the small asm code snippet in your disassembly and use that - it may differ slightly from the ixus160 version
- to load your diskboot.bin, you need to make your SD card bootable. See
http://chdk.wikia.com/wiki/Bootable_SD_cardA word of warning: make sure you don't enable ARAM in your port's makefile.inc until you have a well functioning port. Running Canon Basic scripts (which you may need to during development) corrupts the ARAM memory area.
Oh, and you may want to share your source, so you can get better help.
It looks like the 100c and 100a fw versions are similar enough, so they won't need separate ports.